2013-06-05 41 views
1

我負責創建一個記錄程序,用於跟蹤讀取文件和文件夾時的一些統計信息。與Google Drive和TortoiseSVN類似,文件夾和文件圖標應反映某些更改。例如,具有未在某個計算機上查看的文件的USB具有'x',而查看的文件具有'o'。帶desktop.ini和即時刷新的自定義文件夾圖標

我可以跟蹤與this Windows API的文件的使用,和圖標(以及其它的一些選項)可以通過的desktop.ini文件[1234]被改變。

雖然手動搞亂了desktop.ini文件,但我已經成功地更改了圖標,描述和其他有趣的東西。問題是新的更改不會更新,直到Windows再次解析desktop.ini文件。這往往會在幾秒到幾分鐘之間不一致地發生。 F5刷新不會強制執行重新分析,但會在發生重新分析時更新映像。

如何強制Windows在手動和(更重要的)在C++程序中重新解析desktop.ini文件?

是否有替代的C++ Windows API可以立即更改文件夾圖標?

回答

2

如果您編輯desktop.ini,它將不會自動刷新。如果你希望有不同的文件夾圖標來表示不同的狀態區別(類似於SVN),那麼你需要覆蓋圖標

SHFOLDERCUSTOMSETTINGS fcs = {0}; 
fcs.dwSize = sizeof(SHFOLDERCUSTOMSETTINGS); 
fcs.dwMask = FCSM_ICONFILE; 
fcs.pszIconFile = iconPath; 
fcs.cchIconFile = 0; 
fcs.iIconIndex = iconIndex; 
SHGetSetFolderCustomSettings(&fcs, folderPath, FCS_FORCEWRITE); 
+0

它的工作原理!我使用的舊方式不立即更新:https://msdn.microsoft.com/en-us/library/cc144102(VS.85).aspx – fpohtmeh

0

:使用SHGetSetFolderCustomSettings寫信給它。更改文件夾圖標不是合適的解決方案。文件夾圖標的變化會立即反映出來 如果您需要更多詳細信息,請告訴我。

相關問題