各位大神,
小弟剛接觸Windows編程,公司需要在一個開源專案(owncloud)上稍作修改,用作自己公司的程式(Panda),其中涉及到修改檔案覆寫圖示的問題。
具體問題是:程式裝載了一個OCOverlays_XX.dll檔案用于添加覆寫的圖示,我在原程式工程的 基礎上,簡單修改了對應的UUID值,使用的圖示名字也該了。功能倒是實作了,但是公司的Panda和開源的owncloud不能共存,一旦開兩個軟體,就有一個軟體的圖示顯示的Windows默認的圖示。
而且,假如我先安裝了ownclou(感覺這個時候系統使用的是owncloud加載的圖示),然后再安裝Panda,這個時候把owncloud卸載了,panda對應的那些檔案就回編程不認識的圖示了。(感覺owncloud下載之后,系統找不到圖示了,于是panda這邊的檔案就沒有對應圖示了)。然后再重啟explorer就沒問題了。(感覺像是系統又從panda側加載了圖示)。
括號里面的都是小弟個人的猜測,沒有得到證實。求教大神能不能幫忙解釋一下是什么問題,最好再提供解決的方案。
uj5u.com熱心網友回復:
編譯32位和64位兩個版本各自注冊uj5u.com熱心網友回復:
還有兩點:有時候注冊或者取消注冊,系統并不會立即生效,因為覆寫圖示這些組件是在桌面啟動時加載的。所以一般想要看到效果,必須要重啟 explorer 行程。另外,覆寫圖示系統同時最多支持 15 個,這是因為系統設計 List View 控制元件的時候,一個 32 位的狀態位,只留了兩個位元組用來記錄覆寫圖示的索引。系統本身已經占用了幾個,比如快捷方式的箭頭,共享檔案夾的手型圖示等,所以給用戶能使用的個數就更少了。這就導致各個程式都會搶占覆寫圖示相關項在如下注冊表鍵下面的靠前位置,否則就看不到效果了:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
uj5u.com熱心網友回復:
僅供參考:rem 關閉Windows explorer
taskkill /f /im explorer.exe
rem 清理系統圖示快取資料庫
attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db"
del /f "%userprofile%\AppData\Local\IconCache.db"
attrib /s /d -h -s -r "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\*"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_102.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db"
rem 清理 系統托盤記憶的圖示
echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams
echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream
rem 重啟Windows外殼程式explorer
start explorer
uj5u.com熱心網友回復:
上面說錯了,是 1 個位元組用來記錄覆寫圖示索引的。#define LVIS_OVERLAYMASK 0x0F00 // 這個就是
#define LVIS_STATEIMAGEMASK 0xF000
uj5u.com熱心網友回復:
從 Windows 6.0 (Vista) 開始系統包含環境變數 %LocalAppData%,不需要用 %userprofile%\AppData\Local。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/91097.html
上一篇:如何獲得Datawindow里的內容,通過訊息的方式
下一篇:mfc 多檔案 設定標簽的顏色
