windows 文件关联图标的设置方法 (附部分代码)
windows文件关联图标的查看与设置, 主要是通过注册表实现的.
举例来说, .cpp文件的关联图标.
首先, 打开注册表: HKCR/.cpp, 如下图. 看红框部分, "默认"值, 即是 .cpp的值, 它==VisualStudio.cpp.9.0, 不用管它是什么东东, 我们直接打开 HCR/VisualStudio.cpp.9.0. 看下一幅图.
这里-----, 是VisulaStudio.cpp.9.0, 我们看DefaultIcon, 它就是指定了图标. "默认"值, 就是它的值.
它的值是: C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\VCProject.dll,2
即, 它使用 VCProject.dll 中的第3个图标. 我们可以试着改变它, 看是否会改变.cpp的图标.
注意:
如果该项下有CurVer项时, 就会忽略 DefaultIcon, 它会去找: HKCR\[CurVer]
然后使用HKCR\[CurVer]\DefaultIcon中的图标!
所以代码部分是非常好写的....我们要做的, 就是要做得比较人性化, 易用.
一. 要先提取出当前的图标, 像Windows默认一样, 我们可以把文件VCProject.dll中所有的图标都列出来. 使用 ExtractIcon 函数即可实现.
然后, 用一个ListView控件, ListView_SetImageList (), 即可将Icon全部显示出来, 然后根据索引2, 再选中2的图标, 这样就做到了显示.
也可以使用 SHGetFileInfo (...SHGFI_ICON|SHGFI_OPENICON..)进行获取,最好用这种方式,因为有些文件没有被记录到注册表中,这个时候,
它就会使用“打开程序”索引为0的图标。
二. 用GetOpenFileName去获取一个DLL/EXE或ICON文件, 如果是DLL/EXE, 就用[一]的方法进行显示, 并由用户去选择Index.
注意,如果是.ico文件,那么也要在最后加0,如: C:\a.ico,0
三. 使用用户选择的文件及索引, 直接进行设置注册表.
四. 使用 SHChangeNotify 进行更新界面图标.
五. 完成.