2012-12-15 88 views
5

我使用IShellLink接口在桌面上創建了一個類似於this page底部所述代碼的快捷方式(.lnk)文件。是否有一種特殊的方法從桌面上刪除快捷方式?

所以我的假設是,要刪除這個快捷方式,我可以簡單地在.lnk文件上調用DeleteFile,但顯然這是不夠的......如果我這樣做,我會得到一個如下所示的快捷方式文件的剩餘部分:

enter image description here

但有趣的是,如果我瀏覽桌面文件夾中的文件,說與Windows資源管理器,.lnk文件實際上不是在那裏。我看到的是桌面GUI表面上的一些工件。

不知道如何刪除快捷方式

+7

好吧,我想我明白了。發帖前應該做更多的研究,對不起每個人。我會保留它,但對於那些也遇到它的人。您需要在刪除.lnk文件後調用以下內容:'SHChangeNotify(SHCNE_DELETE,SHCNF_PATH | SHCNF_FLUSHNOWAIT,pDeletedFilePath,NULL);' – c00000fd

+12

請將您的評論發佈爲答案。根據常見問題解答,回答您自己的問題不僅僅是被允許的,它是受到鼓勵的。 :-) –

+0

添加上下文:這僅僅是刷新瀏覽器(它也顯示桌面圖標)。它可能會自動發生,或者在某些窗口的時間延遲上發生。當通過Shell API ShFileOp刪除文件時(看起來過度殺毒),explicitrefresh不是必需的。 – peterchen

回答

2

OK,按照上面的建議,這裏有一個需要後來被稱爲刷新外殼的API(微軟希望它做的方式?):

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

我們可以用相同的方式刪除文件夾快捷方式嗎? –

+0

@SaiKrishnaPalagummi:IDK。我一直在處理這個問題已經有一段時間了。你必須自己嘗試併發布結果。 – c00000fd