1. 在不知道文件的前提下,根据后缀得到,文件icon
SHFILEINFO sfi;
HIMAGELIST hil;
ZeroMemory(&sfi,sizeof(sfi));
hil = SHGetFileInfo(".zip",
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON);
2. 任务栏出错后,很多任务栏图标都消失了,如果要实现在任务栏再此启动的时候,恢复图标
程序中应注册此消息
RegisterWindowMessage("TaskbarCreated");
3.调试 shell 方法
要让 Explorer 更迅速地卸载Shell扩展执行文件,需要创建如下注册表项:
HKLM/Software/Microsoft/Windows/CurrentVersion/Explorer/AlwaysUnloadDLL
并将其值设为 "1". 对于Win9x, 这是你能做的最好的方法。
而在Win NT/2000上, 你可以找到如下键:
HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer
并创建一个名为 DesktopProcess的DWORD值 1. 这会使桌面和任务栏运行在同一个进程中, 而其他每一个 Explorer 窗口都运行在它自己的每一个进程内. 也就是说,你可以在单个的Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的DLL就会被马上卸载,
如果还不能卸载,点击关闭电脑,按ctrl+alt+shite的同时,点击取消关机,这是 shell 将关闭,再用你的程序启动shell调试,有事还不能替换 dll, 关闭所有的ie 窗口。
SHFILEINFO sfi;
HIMAGELIST hil;
ZeroMemory(&sfi,sizeof(sfi));
hil = SHGetFileInfo(".zip",
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON);
2. 任务栏出错后,很多任务栏图标都消失了,如果要实现在任务栏再此启动的时候,恢复图标
程序中应注册此消息
RegisterWindowMessage("TaskbarCreated");
3.调试 shell 方法
要让 Explorer 更迅速地卸载Shell扩展执行文件,需要创建如下注册表项:
HKLM/Software/Microsoft/Windows/CurrentVersion/Explorer/AlwaysUnloadDLL
并将其值设为 "1". 对于Win9x, 这是你能做的最好的方法。
而在Win NT/2000上, 你可以找到如下键:
HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer
并创建一个名为 DesktopProcess的DWORD值 1. 这会使桌面和任务栏运行在同一个进程中, 而其他每一个 Explorer 窗口都运行在它自己的每一个进程内. 也就是说,你可以在单个的Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的DLL就会被马上卸载,
如果还不能卸载,点击关闭电脑,按ctrl+alt+shite的同时,点击取消关机,这是 shell 将关闭,再用你的程序启动shell调试,有事还不能替换 dll, 关闭所有的ie 窗口。