如何在创建文件时设置图标文件
我正在创建一个tar文件(由多个文件组成),现在在保存这个tar文件的时候,我把它保存为我特定的扩展名,比如说(.xyz)。所以我希望每次我从我的工具保存这种类型的文件(.xyz扩展名)时,这个文件都应该以特定的图标文件格式保存。这个就像我们从画图软件(mspaint)保存bmp或jpeg文件时,它们会以各自的图标文件格式保存一样。
谢谢
1 个回答
要给你的扩展程序关联一个图标,你需要在注册表中创建一个条目。简单来说,图标本身并没有什么意义,除非你把它和某个程序关联起来,这个操作也可以在注册表中完成。比如:
首先,为你的程序的图标创建一个条目,举个例子: HKCU\Software\Classes\myprog.file.xyz
然后,在 HKCU\Software\Classes\myprog.file.xyz 下创建一个默认图标的条目: HKCU\Software\Classes\myprog.file.xyz\DefaultIcon
在这里,你可以指定一个图标的路径,或者指定你的应用程序,这样图标就会从资源中提取。
如果你希望你的扩展能够正确打开,还需要为“打开”和其他命令创建条目,比如: HKCU\Software\Classes\myprog.file.xyz\Shell\Open\Command 然后输入你的程序的路径或者其他程序的路径。
同样,你也可以添加查看、打印等命令。
现在,你需要告诉注册表,扩展名 .xyz 应该使用 HKCU\Software\Classes\myprog.file.xyz 中的信息,所以要创建一个条目: HKCU\Software\Classes.xyz = myprog.file.xyz
其实,如果你愿意,可以直接把步骤1到3的内容放在 HKCU\Software\Classes.xyz 中,但这种重定向的方式更好。因为这样你可以很方便地把 myprog.file.xyz 关联到多个扩展名,比如 .xxx、.yyy 或 .zzz 等等。
现在,使用 Python 模块 _winreg (http://docs.python.org/library/_winreg.html),你可以通过编程的方式创建这些条目。比如,这段脚本会把 xyz 设置为 Python 的图标。
from _winreg import *
xyzKey = CreateKey(HKEY_CLASSES_ROOT, ".xyz")
SetValue(xyzKey, None, REG_SZ, "MyTest.xyz")
CloseKey(xyzKey)
myTestKey = CreateKey(HKEY_CLASSES_ROOT, "MyTest.xyz")
iconKey= CreateKey(myTestKey, "DefaultIcon")
CloseKey(myTestKey)
SetValue(iconKey, None, REG_SZ, "D:\\Python25\\python.exe")
CloseKey(iconKey)