Windows下覆盖图标的实现
本文参考这里
为了取得类似Tortoise Git的文件状态的图标效果,需要自行实现
- 用Vistual Studio新建ATL工程
- 新建ATL Simple Object类
- 继承IShellIconOverlayIdentifier接口
- 实现接口的三个方法
实现后,使用命令可以分别注册和注销dll,需要注意的是,dll的位数需要与目标系统相同,32位的dll在64位的系统内不起作用
regsvr32 "C:\syncode\windows-qt\install\LenovoCloudSyncFolder\x64\Release\LenovoCloudSyncFolder.dll" -s & taskkill /f /im explorer.exe & explorer
regsvr32 /u "C:\syncode\windows-qt\install\LenovoCloudSyncFolder\x64\Release\LenovoCloudSyncFolder.dll" -s & taskkill /f /im explorer.exe & explorer
重启explorer.exe是为了让覆盖图标立刻生效
如果需要在NSIS脚本上;重启explorer.exe,可以使用
FindWindow $0 "Progman" "Program Manager"
System::Call User32::GetWindowThreadProcessId(ir0,*i.r0)
System::Call Kernel32::OpenProcess(i0x0001,i,ir0)i.r0
System::Call Kernel32::TerminateProcess(ir0,i0)
System::Call Kernel32::CloseHandle(ir0)