2013-05-02 25 views
0

我在Windows 8上,並且擁有更改文件夾圖標的C#代碼。更改文件夾圖標需要更長的時間才能顯示更新的圖標

這工作得很好,但需要很長時間才能刷新。我一直在嘗試如下方法:

IntPtr path = Marshal.StringToHGlobalAuto(@"[FolderPath]"); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_ATTRIBUTES, 
    HChangeNotifyFlags.SHCNF_PATHA, path, IntPtr.Zero); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_UPDATEIMAGE, 
    HChangeNotifyFlags.SHCNF_DWORD, IntPtr.Zero, IntPtr.Zero); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, 
    HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); 

這似乎對文件夾圖標沒有任何影響。它會刷新我的屏幕,但圖標仍然是相同的圖標。幾分鐘後,我可以按F5鍵,它將變爲我指定的文件夾圖標。

我見過一些非常醜陋的方法來解決這個問題,但我真的想知道什麼會告訴Windows以編程方式'刷新'文件夾圖標。我已經看到Dropbox似乎是即時的,我正在考慮有一個解決方案。

+0

你有沒有找到一個解決辦法?我有和java一樣的問題。任何輸入都會有幫助! – insanity 2014-09-22 05:48:46

回答

0

要更改文件夾圖標,它需要兩個步驟來實現:

Step 1. Create a desktop.ini file inside the folder for which to create the icon (the "Target Folder"). 
Step 2. Set the Target Folder's attribute to "System". 

要完成這些步驟,創建兩個類,即FolderIcon,其編排的步驟和IniWriter,這只是有一個叫WriteValue靜態方法()包裝WritePrivateProfileString()Win32 API函數。

爲了讓所有這些事情的方法正確的話,只要按照這個代碼項目教程:

http://www.codeproject.com/Articles/9331/Create-Icons-for-Folders-in-Windows-Explorer-Using

+0

這應該是一個評論... – MUG4N 2013-05-02 21:17:54

+0

請從您的答案鏈接總結解決方案。 – Linuxios 2013-05-02 22:10:07

+0

感謝您的答案,但我的問題表明,我已經知道如何做到這一點,它工作正常。問題是這個圖標需要幾分鐘才能真正改變。我可以按F5刷新等,但它仍然不會改變。然後突然之間,圖標將變成我指定的圖標。我需要知道我需要調用哪些Windows函數來強制更新圖像。 – hobeau 2013-05-03 13:44:04

相關問題