2012-12-15 6 views
5

मैंने this page के नीचे वर्णित कोड के समान IShellLink इंटरफ़ेस का उपयोग कर डेस्कटॉप पर एक शॉर्टकट (.lnk) फ़ाइल बनाई है।क्या डेस्कटॉप से ​​शॉर्टकट निकालने के लिए कोई विशेष विधि है?

तो मेरी धारणा थी कि इस शॉर्टकट को हटाने के लिए मैं .lnk फ़ाइल पर DeleteFile पर कॉल कर सकता हूं, लेकिन स्पष्ट रूप से यह पर्याप्त नहीं है ... अगर मैं ऐसा करता हूं तो मुझे शॉर्टकट फ़ाइल का अवशेष मिलता है जो इस तरह दिखता है:

enter image description here

लेकिन क्या दिलचस्प है कि अगर मैं डेस्कटॉप फ़ोल्डर में फ़ाइलें ब्राउज़ करें, Windows Explorer के साथ कह रहा है, .lnk फ़ाइल वास्तव में वहाँ नहीं है। मैं जो देखता हूं वह डेस्कटॉप जीयूआई सतह पर कुछ आर्टिफैक्ट है।

किसी भी विचार कैसे एक शॉर्टकट को दूर करने के

+7

ठीक है, मुझे लगता है कि मुझे मिल गया। पोस्ट करने से पहले अधिक शोध किया जाना चाहिए, क्षमा करें हर कोई। मैं इसे रखता हूं हालांकि उन लोगों के लिए जो इसमें भाग लेते हैं। आपको .lnk फ़ाइल को हटाने के बाद निम्न को कॉल करने की आवश्यकता है: 'SHChangeNotify (SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL); ' – c00000fd

+12

कृपया अपनी टिप्पणी को उत्तर के रूप में पोस्ट करें। एफएक्यू के अनुसार, अपने स्वयं के प्रश्नों का उत्तर देने की अनुमति नहीं है, इसे प्रोत्साहित किया जाता है। :-) –

+0

संदर्भ जोड़ने के लिए: यह केवल एक्सप्लोरर को रीफ्रेश करने के लिए है (जो डेस्कटॉप आइकन भी प्रदर्शित करता है)। यह स्वचालित रूप से हो सकता है या खिड़कियों के कुछ कथनों पर थोड़ी देर देरी हो सकती है। शेल एपीआई ShFileOp (जो ओवरकिल दिखाई देता है) के माध्यम से फ़ाइल को हटाते समय, clearrefresh आवश्यक नहीं है। – peterchen

उत्तर

2

ठीक है, ऊपर सुझाव के अनुसार, यहां एपीआई कि खोल ताज़ा करने के लिए बाद में कॉल किया जाना चाहिए है (वैसे माइक्रोसॉफ्ट यह किया चाहता है?):

SHChangeNotify(SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL); 
+0

क्या हम उसी तरह एक फ़ोल्डर शॉर्टकट हटा सकते हैं? –

+0

@ साईकृष्णपालागुमी: आईडीके। यह थोड़ी देर हो गया है क्योंकि मैं इससे निपट रहा हूं। आपको इसे स्वयं करने की कोशिश करनी होगी और परिणाम पोस्ट करना होगा। – c00000fd

संबंधित मुद्दे