代码之家  ›  专栏  ›  技术社区  ›  Simon

如何为生成的快捷方式应用图标?

  •  1
  • Simon  · 技术社区  · 7 年前

    我们在windows的“开始”菜单中创建一个快捷方式,并为该快捷方式应用目标文件的图标。目标文件是帮助的帮助文件&手动(后缀为.chm)。我们尝试了以下代码:

    var lPath = @"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ProductName\Help.lnk";
    var lTargetPath = @"C:\Program Files\ManufacturerName\ProductName\Help.chm";
    
    WshShell lWshShell = new WshShell();
    IWshShortcut lShortcut = (IWshShortcut)lWshShell.CreateShortcut(lPath);
    lShortcut.WorkingDirectory = lPath;            
    lShortcut.TargetPath = lTargetPath;
    
    lShortcut.IconLocation = lTargetPath; // <-- I want to apply the same icon as the target file here.
    

    目标。chm文件具有以下图标:

    enter image description here

    执行此代码时,“开始”菜单中的快捷方式如下所示:

    enter image description here

    如何自动应用目标文件的图标?

    注意:当我使用相同的路径通过WIX创建快捷方式时,图标将应用于快捷方式。

    1 回复  |  直到 7 年前
        1
  •  1
  •   MarioDS    7 年前

    我的印象是,Windows中任何文件的图标都是与 .exe 默认情况下将打开此类文件的程序(即文件关联和默认程序)。对于快捷方式,默认应遵循符号链接并显示目标本身的任何图标, 除非你覆盖它 .

    我猜那条线 lShortcut.IconLocation = lTargetPath; 将图标设置为无效图标,但Windows仍将尝试尊重它,并返回到您看到的默认“空白”图标。请注意 .chm 文件本身没有图标,也不是图标。显示的图标只是系统帮助查看器的图标。

    我只是手动测试了一下。创建 .txt 文件,并验证其是否有图标。然后右键单击它并选择 Send To -> Desktop (Create Shortcut) 创建快捷方式。它将具有相同的图标。右键单击快捷方式,选择 Properties 然后 Set Icon... 并键入任何路径。按 OK ,取消警告,按 好啊 再一次

    对我来说,该图标已从记事本++'s图标更改为 .txt文件 文件)切换到空白文件图标。

    下次在快捷方式上选择“设置图标”时,Windows将首先显示一条警告,指出找不到以前设置的无效路径,因此这证明无论您填写什么,都会保存在某个位置,无论它是否有效。