HookDeskTopWindowMsg

.net winform程序打開SaveFileDialog時,調試窗口顯示這些信息,盲猜是對話框中的顯示內容被第三方污染,比如圖標,按鈕的變化。

HookDeskTopWindowMsg,

Tencent\QQPCMgr\12.11.19357.218\QMInternalShellExt64.dll is not exists so fa

“App.exe”(Win32): 已加載“C:\Windows\System32\comdlg32.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\dui70.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\duser.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\ExplorerFrame.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\thumbcache.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\policymanager.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\msvcp110_win.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\DataExchange.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\dcomp.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\d3d11.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\dxgi.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\dxgi.dll”。已加載符號。
“App.exe”(Win32): 已卸載“C:\Windows\System32\dxgi.dll”
“App.exe”(Win32): 已加載“C:\Windows\System32\twinapi.appcore.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\rmclient.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\msftedit.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\Windows.Globalization.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\BCP47mrm.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\BCP47Langs.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\globinputhost.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\xmllite.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\edputil.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\StructuredQuery.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\atlthunk.dll”。已加載符號。
線程 0x44c 已退出,返回值爲 0 (0x0)。
“App.exe”(Win32): 已加載“C:\Windows\System32\Windows.Storage.Search.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\Windows.StateRepositoryPS.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\oleacc.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\msctfuimanager.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\UIAutomationCore.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\sxs.dll”。已加載符號。
mincore\com\oleaut32\dispatch\ups.cpp(2125)\OLEAUT32.dll!00007FF8F67A2DA3: (caller: 00007FF8F67A2F1A) ReturnHr(1) tid(264c) 8002801D 庫沒有註冊。
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(1) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(1) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C568C78A-652C-425B-8E6B-FFA73043302D}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(2) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(2) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2A6FE247-5DA3-4732-9626-77820518FD77}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(3) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(3) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {FF895810-293B-464A-93F2-82D11E07EEC8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(4) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(4) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {D8BE1E70-244A-46F0-BC5B-077D5F29EED8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(5) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(5) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {7FAAC51E-19C2-4E2D-B598-A8D32E45BA48}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(6) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(6) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2433C980-3DAB-43CA-99EB-01D5771054D0}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(7) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(7) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {BBACC218-34EA-4666-9D7A-C78F2274A524}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(8) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(8) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {5AB7172C-9C11-405C-8DD5-AF20F3606282}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(9) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(9) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A78ED123-AB77-406B-9962-2A5D9D2F7F30}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(10) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(10) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {F241C880-6982-4CE5-8CF7-7085BA96DA5A}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(11) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(11) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(12) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(12) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {9AA2F32D-362A-42D9-9328-24A483E2CCC3}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(13) tid(42f8) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(13) tid(42f8) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.] 
“App.exe”(Win32): 已加載“C:\Windows\System32\UIAnimation.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\coml2.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\mpr.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\drprov.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\winsta.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\ntlanman.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\davclnt.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\davhlpr.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\wkscli.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\cscapi.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\netutils.dll”。已加載符號。
0x00007FF8F5F59689 (KernelBase.dll)處(位於 App.exe 中)引發的異常: 0x000006BA: RPC 服務器不可用。。
“App.exe”(Win32): 已加載“C:\Windows\System32\linkinfo.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\twinapi.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\apphelp.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\dlnashext.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\PlayToDevice.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\DevDispItemProvider.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Users\bosd\AppData\Roaming\baidu\BaiduNetdisk\yunshellextv164.dll”。無法查找或打開 PDB 文件。
“App.exe”(Win32): 已加載“C:\Windows\System32\MMDevAPI.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\devobj.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Program Files (x86)\Tencent\QQPCMgr\12.11.19357.218\QMGCShellExt64.dll”。無法查找或打開 PDB 文件。
“App.exe”(Win32): 已卸載“C:\Program Files (x86)\Tencent\QQPCMgr\12.11.19357.218\QMGCShellExt64.dll”
“App.exe”(Win32): 已加載“C:\Program Files (x86)\Tencent\QQPCMgr\12.11.19357.218\QMGCShellExt64.dll”。無法查找或打開 PDB 文件。
“App.exe”(Win32): 已加載“C:\Windows\WinSxS\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9554_none_88e038cb2fae7c50\msvcp80.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\wpdshext.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Program Files (x86)\Tencent\QQPCMgr\12.11.19357.218\exnscan64.dll”。無法查找或打開 PDB 文件。
“App.exe”(Win32): 已加載“C:\Windows\System32\netapi32.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\IPHLPAPI.DLL”。已加載符號。
[zhaxok] Enter HookDeskTopWindowMsg[zhaxok] Enter InitInternalShellExt[zhaxok] C:\Program Files (x86)\Tencent\QQPCMgr\12.11.19357.218\QMInternalShellExt64.dll is not exists so failed[zhaxok] InitInternalShellExt bRetCode = 0shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(14) tid(42f8) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(14) tid(42f8) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {B7667919-3765-4815-A66D-98A09BE662D6}.] 
“App.exe”(Win32): 已加載“C:\Windows\System32\PortableDeviceApi.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\EhStorShell.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\setupapi.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\wintrust.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\cscui.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\ntshrui.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\srvcli.dll”。已加載符號。
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(15) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(15) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C568C78A-652C-425B-8E6B-FFA73043302D}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(16) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(16) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2A6FE247-5DA3-4732-9626-77820518FD77}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(17) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(17) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {FF895810-293B-464A-93F2-82D11E07EEC8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(18) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(18) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {D8BE1E70-244A-46F0-BC5B-077D5F29EED8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(19) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(19) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {7FAAC51E-19C2-4E2D-B598-A8D32E45BA48}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(20) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(20) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2433C980-3DAB-43CA-99EB-01D5771054D0}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(21) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(21) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {BBACC218-34EA-4666-9D7A-C78F2274A524}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(22) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(22) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {5AB7172C-9C11-405C-8DD5-AF20F3606282}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(23) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(23) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A78ED123-AB77-406B-9962-2A5D9D2F7F30}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(24) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(24) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {F241C880-6982-4CE5-8CF7-7085BA96DA5A}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(25) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(25) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(26) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(26) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {9AA2F32D-362A-42D9-9328-24A483E2CCC3}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(27) tid(3440) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(27) tid(3440) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.] 
[zhaxok] Enter HookDeskTopWindowMsgshell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(28) tid(3440) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(28) tid(3440) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {B7667919-3765-4815-A66D-98A09BE662D6}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(29) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(29) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C568C78A-652C-425B-8E6B-FFA73043302D}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(30) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(30) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2A6FE247-5DA3-4732-9626-77820518FD77}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(31) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(31) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {FF895810-293B-464A-93F2-82D11E07EEC8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(32) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(32) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {D8BE1E70-244A-46F0-BC5B-077D5F29EED8}.] 
“App.exe”(Win32): 已加載“C:\Windows\System32\EhStorAPI.dll”。已加載符號。
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(33) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(33) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {7FAAC51E-19C2-4E2D-B598-A8D32E45BA48}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(34) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(34) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2433C980-3DAB-43CA-99EB-01D5771054D0}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(35) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(35) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {BBACC218-34EA-4666-9D7A-C78F2274A524}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(36) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(36) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {5AB7172C-9C11-405C-8DD5-AF20F3606282}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(37) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(37) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A78ED123-AB77-406B-9962-2A5D9D2F7F30}.] 
“App.exe”(Win32): 已加載“C:\Windows\System32\wtsapi32.dll”。已加載符號。
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(38) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(38) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {F241C880-6982-4CE5-8CF7-7085BA96DA5A}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(39) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(39) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(40) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(40) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {9AA2F32D-362A-42D9-9328-24A483E2CCC3}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(41) tid(3750) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(41) tid(3750) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.] 
[zhaxok] Enter HookDeskTopWindowMsgshell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(42) tid(3750) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(42) tid(3750) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {B7667919-3765-4815-A66D-98A09BE662D6}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(43) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(43) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C568C78A-652C-425B-8E6B-FFA73043302D}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(44) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(44) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2A6FE247-5DA3-4732-9626-77820518FD77}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(45) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(45) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {FF895810-293B-464A-93F2-82D11E07EEC8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(46) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(46) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {D8BE1E70-244A-46F0-BC5B-077D5F29EED8}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(47) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(47) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {7FAAC51E-19C2-4E2D-B598-A8D32E45BA48}.] 
shell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(48) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(48) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {2433C980-3DAB-43CA-99EB-01D5771054D0}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(49) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(49) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {BBACC218-34EA-4666-9D7A-C78F2274A524}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(50) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(50) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {5AB7172C-9C11-405C-8DD5-AF20F3606282}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(51) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(51) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A78ED123-AB77-406B-9962-2A5D9D2F7F30}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(52) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(52) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {F241C880-6982-4CE5-8CF7-7085BA96DA5A}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(53) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(53) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(54) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(54) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {9AA2F32D-362A-42D9-9328-24A483E2CCC3}.] 
shell\shell32\ovrlaymn.cpp(745)\shell32.dll!00007FF8F706785F: (caller: 00007FF8F70674AB) ReturnHr(55) tid(3fa4) 80040154 沒有註冊類
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(55) tid(3fa4) 80040154 沒有註冊類
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.] 
[zhaxok] Enter HookDeskTopWindowMsgshell\shell32\ovrlaymn.cpp(821)\shell32.dll!00007FF8F7135AAC: (caller: 00007FF8F70674AB) ReturnHr(56) tid(3fa4) 80070002 系統找不到指定的文件。
shell\shell32\ovrlaymn.cpp(861)\shell32.dll!00007FF8F706753C: (caller: 00007FF8F70670CC) LogHr(56) tid(3fa4) 80070002 系統找不到指定的文件。
    Msg:[Creating icon overlay handler from Registry failed. The CLSID is {B7667919-3765-4815-A66D-98A09BE662D6}.] 
“App.exe”(Win32): 已加載“C:\Windows\System32\winmm.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\winmmbase.dll”。已加載符號。
“App.exe”(Win32): 已加載“C:\Windows\System32\winmmbase.dll”。已加載符號。
“App.exe”(Win32): 已卸載“C:\Windows\System32\winmmbase.dll”
“App.exe”(Win32): 已加載“C:\Windows\System32\winmmbase.dll”。已加載符號。
“App.exe”(Win32): 已卸載“C:\Windows\System32\winmmbase.dll”

 


QT輸出問題[zhaxok] Enter

點擊QT界面上的按鈕,並打開QDialog選擇文件出現以下的告警:

[zhaxok] Enter HookDeskTopWindowMsg[zhaxok] Enter InitInternalShellExt[zhaxok] D:\diannaoguanjia\QQPCMgr\12.15.19676.234\QMInternalShellExt64.dll is not exists so failed[zhaxok] InitInternalShellExt bRetCode = 0[zhaxok] Enter HookDeskTopWindowMsg

卸載電腦管家之後,不再出現該問題


Creating Icon Overlay Handlers / 創建圖標標記 Handlers (翻譯自MSDN) / VC++, Windows, DLL, ATL, COM...

 

創建圖標標記 Handlers

Creating Icon Overlay Handlers

 

圖標標記是放在代表着某個 Shell 對象的圖標之左下角的小圖像。它們通常被加在一個對象的圖標的身上來提供一些額外信息。例如,有個常見的圖標標記是用來表示圖標對應着一個鏈接而非真正的文件或文件夾的小箭頭。除了系統提供的標準圖標標記,用戶還可以通過實現和註冊一個圖標標記 handler 來給特殊的 Shell 對象自定義圖標標記。

Icon overlays are small images placed at the lower-left corner of the icon that represents a Shell object. They are normally added to an object's icon to provide some extra information. For instance, a commonly used icon overlay is the small arrow that indicates that the icon represents a link, rather than the actual file or folder. In addition to the standard icon overlays that are provided by the system, you can request custom icon overlays for specified Shell objects by implementing and registering an icon overlay handler.

 

注意  系統能支持的不同圖標標記數量受到系統圖像列表中圖標標記可用空間的限制。目前爲圖標標記分配了15個插槽,其中一些被系統所保留。因此,圖標標記 handlers 應該只在現有選擇無法令人滿意的情況下采用。

Note   The number of different icon overlay handlers that the system can support is limited by the amount of space available for icon overlays in the system image list. There are currently fifteen slots allotted for icon overlays, some of which are reserved by the system. For this reason, icon overlay handlers should be implemented only if there are no satisfactory alternatives.

 

Creating Shell Extension Handlers 裏討論了實現和註冊一個 Shell 拓展 handler 的普遍過程。這篇文檔重點在於實現圖標標記 handler 的方面。

The general procedures for implementing and registering a Shell extension handler are discussed in Creating Shell Extension Handlers. This document focuses on those aspects of implementation that are specific to icon overlay handlers.

 

  • 圖標標記如何工作
  • 註冊圖標標記 handler
  • 實現圖標標記 handler
    • 實現 GetOverlayInfo
    • 實現 GetPriority
    • 實現 IsMemberOf
  • How Icon Overlay Handlers Work
  • Registering Icon Overlay Handlers
  • Implementing Icon Overlay Handlers
    • Implementing GetOverlayInfo
    • Implementing GetPriority
    • Implementing IsMemberOf

 

圖標標記如何工作

How Icon Overlay Handlers Work

圖標標記 handler 是與特定圖標標記相關聯的組件對象模型(COM)對象。 Shell 和 handler 之間的通信都通過 handler 的 IShellIconOverlayIdentifier 接口。

Icon overlay handlers are Component Object Model (COM) objects that are associated with a particular icon overlay. All communication between the Shell and the handler takes place through the handler's IShellIconOverlayIdentifier interface.

當 Shell 啓動時,所有的圖標標記都會被 Shell 通過調用它們的以下兩個 IShellIconOverlayIdentifier 方法來完成初始化:

When the Shell starts up, it initializes all icon overlay handlers by calling two of their IShellIconOverlayIdentifier methods:

  • Shell 調用 IShellIconOverlayIdentifier::GetOverlayInfo 來獲得 handler 的圖標標記的位置。圖標標記 handler 返回包含標記圖像的文件的文件名以及它在文件中的索引。然後 Shell 將圖標標記加入到系統圖像列表中。
  • The Shell calls IShellIconOverlayIdentifier::GetOverlayInfo to request the location of the handler's icon overlay. The icon overlay handler returns the name of the file containing the overlay image, and its index within that file. The Shell then adds the icon overlay to the system image list.
  • Shell 調用 IShellIconOverlayIdentifier::GetPriority 來確定圖標標記的優先級。優先級值是從0到100的數字,100代表着最低優先級。如果爲特定文件請求的圖標標記超過一個,Shell 將根據這個值來幫助它決定顯示哪個圖標標記。
  • The Shell calls IShellIconOverlayIdentifier::GetPriority to determine the icon overlay's priority. The priority value is a number from zero to 100, with 100 indicating the lowest priority. If more than one icon overlay is requested for a particular file, the Shell uses this value to help it determine which icon overlay to display.

在繪製一個對象的圖標之前,Shell 將對象的名字傳遞給每個圖標標記 handler 的 IShellIconOverlayIdentifier::IsMemberOf 方法。一個圖標標記 handler 通常與特定的一組文件相關聯。例如,圖標標記 handler 可能會爲某一文件類型的所有成員請求一個標記,比如文件拓展名爲 .myp 的所有文件。如果一個 handler 想要讓它的圖標標記顯示出來,他將返回 S_OK。然後 Shell 調用 handler 的 IShellIconOverlayIdentifier::GetOverlayInfo 方法來確定顯示哪個圖標。

Before painting an object's icon, the Shell passes the object's name to each icon overlay handler's IShellIconOverlayIdentifier::IsMemberOf method. An icon overlay handler is normally associated with a particular group of files. For example, the icon overlay handler might request an overlay for all members of a file type, such as all files with an .myp file name extension. If a handler wants to have its icon overlay displayed, it returns S_OK. The Shell then calls the handler's IShellIconOverlayIdentifier::GetOverlayInfo method to determine which icon to display.

注意  圖像一旦在初始化期間被載入系統圖像列表,就不能被改變了。在初始化後,文件名和索引僅用來識別圖標標記。系統不會載入新的圖標標記。當 IShellIconOverlayIdentifier::GetOverlayInfo 被第一次調用時,你的 handler 必須返回和之前一樣的文件名和索引。

Note   Once the image has been loaded into the system image list during initialization, it cannot be changed. After initialization, the file name and index are used only to identify the icon overlay. The system will not load a new icon overlay. When IShellIconOverlayIdentifier::GetOverlayInfo is called, your handler must return the same file name and index that was specified when the function was first called.

儘管只能顯示一個圖標標記,但是一個對象可能會有來自超過一個 handler 的圖標標記請求。在這種情況下 Shell 通過顯示最高優先級的圖標標記來解決衝突。Shell 通過一系列內置的規則解決了許多類似的衝突。如果這些規則不夠充分,Shell 會在初始化期間比較 handler 的 IShellIconOverlayIdentifier::GetPriority 方法指定的優先級值。

Although only one icon overlay can be displayed, it is possible for an object to have icon overlays requested by more than one handler. In that case, the Shell resolves the conflict by displaying the highest priority icon overlay. The Shell resolves many such conflicts with an internal set of rules. If these rules are not sufficient, the Shell compares the priority values that were specified by the handlers' IShellIconOverlayIdentifier::GetPriority method during initialization.

 

註冊圖標標記 Handler

Registering Icon Overlay Handlers

除了普通的 COM 註冊,你還必須爲該 handler 在這個鍵下創建一個子鍵。

In addition to normal COM registration, you must also create a subkey named for the handler under this key.

          HKEY_LOCAL_MACHINE

          Software

          Microsoft

          Windows

          CurrentVersion

          Explorer

          ShellIconOverlayIdentifiers

將子鍵的默認值設置爲該對象的類標識符(CLSID)GUID 的字符串形式。下面的例子展示瞭如何註冊一個命名爲 MyOverlay 的圖標標記 handler。

Set the default value of the subkey to the string form of the object's class identifier (CLSID) GUID. The following example illustrates how to register an icon overlay handler named MyOverlay.

          HKEY_LOCAL_MACHINE

          Software

          Microsoft

          Windows

          CurrentVersion

          Explorer

          ShellIconOverlayIdentifiers

          MyOverlay

 

                        (Default) = {MyOverlay CLSID GUID}

 

MyOverlay.rgs:

HKCR
{
    NoRemove CLSID
    {
        ForceRemove {CB36C229-73C6-442E-926B-78FB1E8DB581} = s 'MyOverlay Class'
        {
            ForceRemove Programmable
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }
            TypeLib = s '{914BCF58-3175-46D5-BE46-702284548A17}'
            Version = s '1.0'
        }
    }
}

HKLM
{
    NoRemove SOFTWARE
    {
        NoRemove Microsoft
        {
            NoRemove Windows
            {
                NoRemove CurrentVersion
                {
                    NoRemove Explorer
                    {
                        NoRemove ShellIconOverlayIdentifiers
                        {
                            ForceRemove 'MyOverlay' = s '{CB36C229-73C6-442E-926B-78FB1E8DB581}'
                            {
                            }
                        }
                    }           
                }
            }
        }
    }
}

 

實現圖標標記 Handler

Implementing Icon Overlay Handlers

圖標標記 handler 是進程內 COM 對象,作爲 DLL 來實現。它除了 IUnknown 外還輸出一個接口:IShellIconOverlayIdentifier。這個接口有三個方法:IShellIconOverlayIdentifier::GetOverlayInfo、IShellIconOverlayIdentifier::GetPriority和IShellIconOverlayIdentifier::IsMemberOf。

Icon overlay handlers are in-process COM objects, implemented as DLLs. They export one interface in addition to IUnknown: IShellIconOverlayIdentifier. This interface has three methods: IShellIconOverlayIdentifier::GetOverlayInfo, IShellIconOverlayIdentifier::GetPriority, and IShellIconOverlayIdentifier::IsMemberOf.

 

實現 GetOverlayInfo

Implementing GetOverlayInfo

這個方法在初始化期間被第一次調用。該方法會返回包含了圖標標記圖像的文件的完全有效的路徑,以及文件中基於0的索引。然後 Shell 將圖像加入到系統圖像列表中。圖標標記可以被任何標準文件類型的文件所包含,包括 .exe、.dll、.ico。

This method is first called during initialization. The method returns the fully qualified path of the file containing the icon overlay image, and its zero-based index within the file. The Shell then adds the image to the system image list. Icon overlays can be contained in any of the standard file types, including .exe, .dll, and .ico.

在初始化完成後,當 Shell 需要顯示handler的圖標標記時,將會調用 IShellIconOverlayIdentifier::GetOverlayInfo。該方法應該返回與初始化期間一樣的文件名和索引。儘管 Shell 是使用系統圖像列表中緩存的圖像而不是從文件中載入,圖標標記仍然由它的文件名和索引來標識。

After initialization is complete, the Shell calls IShellIconOverlayIdentifier::GetOverlayInfo when it needs to display the handler's icon overlay. The method should return the same file name and index that it did during initialization. Although the Shell uses the image that is cached in the system image list rather than loading the image from the file, an icon overlay is still identified by its file name and index.

 

實現 GetPriority

Implementing GetPriority

該方法僅在初始化期間被調用。它爲handler的圖標標記賦予優先級值。該值的範圍是從0到100,其中100是最低優先級。這個優先級值的目的在於幫助 Shell 解決當多個圖標標記指定到一個對象時產生的衝突。 Shell 一開始使用一系列規則來確定最高優先級的圖標標記。如果這些規則不能解決衝突,那麼 IShellIconOverlayIdentifier::GetPriority 分配給圖標標記的值將決定優先級。

This method is called only during initialization. It assigns a priority value to the handler's icon overlay. The value can range from zero to 100, where 100 is the lowest priority. The purpose of this priority value is to help the Shell resolve the conflict that arises when multiple icon overlays are specified for a single object. The Shell first uses an internal set of rules to determine the highest priority icon overlay. If these rules do not resolve the conflict, the values assigned to the icon overlays by IShellIconOverlayIdentifier::GetPriority determine priority.

IShellIconOverlayIdentifier::GetPriority 設置的優先級值並不是一個可靠的方式來解決兩個不相關的圖標標記之間的衝突。你的 handler 無法確定其他 handler 在使用什麼優先級值。通常情況下,你應該將值設爲0。然而,當你爲同一個對象實現了兩個或更多圖標標記 handler 時,優先級值是十分有用的。通過適當地設置優先級值,你可以指定哪個被請求的圖標標記將被顯示。

The priority value set by IShellIconOverlayIdentifier::GetPriority is not a reliable way to resolve conflicts between unrelated icon overlay handlers. There is no way for your handler to determine what priority values other handlers are using. Normally, you should set the value to zero. However, the priority value is useful when you have implemented two or more icon overlay handlers that can request icon overlay icons for the same object. By setting the priority values appropriately, you can specify which of the requested icon overlays will be displayed.

 

實現 IsMemberOf

Implementing IsMemberOf

Shell 調用該方法來確定是否應該爲一個特定對象顯示一個 handler 的圖標標記。它通過傳遞它的名字給該方法來指定對象。如果一個 handler 希望它的圖標標記被顯示,IShellIconOverlayIdentifier::IsMemberOf 返回 S_OK。如果不,返回S_FALSE。

The Shell calls this method to determine whether it should display a handler's icon overlay for a particular object. It specifies the object by passing its name to the method. If a handler wants to have its icon overlay displayed, IShellIconOverlayIdentifier::IsMemberOf returns S_OK. If not, it returns S_FALSE.

圖標標記 handler 通常試圖與特定的一組文件一起工作。一個典型的例子就是由特定的文件拓展名標識的文件類型。一個圖標標記 handler 可以爲該文件類型的所有文件請求一個圖標標記。有些 handler 僅當該類型的一個文件處於某種特定狀態時請求一個圖標標記。然而,圖標標記 handler 可以自由地爲任意它們想要的對象請求圖標標記。

Icon overlay handlers are normally intended to work with a particular group of files. A typical example is a file type, identified by a specific file name extension. An icon overlay handler can request an icon overlay for all files of the file type. Some handlers request an icon overlay only if a file of the file type is in a particular state. However, icon overlay handlers are free to request their icon overlay for any object that they want.

 

Send comments about this topic to Microsoft

 

Build date: 4/28/2010

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章