我想将某种类型的文件图标更改为新图标。所以我添加了这个片段:
AF_FileAssociator assoc = new AF_FileAssociator(".akp");
string icon = assoc.DefaultIcon.IconPath;
ProgramIcon newDefIcon = new ProgramIcon(@"ake.ico");
assoc.DefaultIcon = newDefIcon;
请参阅here
即使我像这样放置图标的绝对路径:
ProgramIcon newDefIcon = new ProgramIcon(@"D:\ake.ico");
我得到了相同的结果。
我的项目根目录中有ake.ico
图标。当我启动程序时,字符串icon
的值为ake.ico
。
问题是扩展名为.akp
的文件仍然没有图标。
答案 0 :(得分:2)
以这种方式设置与可执行文件的文件关联......
在主类
中添加这些代码行[System.Runtime.InteropServices.DllImport("shell32.dll")]
public static void SHChangeNotify(int wEventId, int uFlags, int dwItem1, int dwItem2)
{
}
然后在表单加载事件中添加此代码
My.Computer.Registry.ClassesRoot.CreateSubKey(".glx").SetValue("", "Galaxy Database", Microsoft.Win32.RegistryValueKind.String);
My.Computer.Registry.ClassesRoot.CreateSubKey("Galaxy Database\\shell\\open\\command").SetValue("", Application.ExecutablePath + " \"%l\" ", Microsoft.Win32.RegistryValueKind.String);
const dynamic SHCNE_ASSOCCHANGED = 0x8000000;
const dynamic SHCNF_IDLIST = 0;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
构建项目并以Administartor身份运行exe。 exe的图标将应用于.apk文件。
备注:它需要管理权限才能更改某些文件关联。注释代码并重建以禁用该功能。仍然会与你的exe保持联系。双击* .apk文件将使用您的exe打开它。
答案 1 :(得分:0)
我找到了一个解决方案:我将图标路径值设置为等于可执行应用程序的路径。它的作品