【问题标题】:How to apply an icon for an generated shortcut?如何为生成的快捷方式应用图标?
【发布时间】:2018-01-19 20:13:59
【问题描述】:

我们在 Windows 的开始菜单中创建一个快捷方式,并为该快捷方式应用目标文件的图标。目标文件是Help & Manual 的帮助文件(后缀为.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 文件具有以下图标:

当我们执行这段代码时,开始菜单中的快捷方式如下所示:

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

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

【问题讨论】:

  • .chm 文件不包含图标资源。
  • @SamAxe:当我通过 WIX 创建快捷方式时,使用相同的路径,然后图标将应用于快捷方式。

标签: c# shortcut startmenu


【解决方案1】:

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

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

我刚刚手动测试了这个。在您的桌面上创建一个.txt 文件并验证它是否有一个图标。然后右键单击它并选择Send To -&gt; Desktop (Create Shortcut) 以创建快捷方式。它将具有相同的图标。右键单击快捷方式,选择Properties,然后选择Set Icon... 并输入任意路径。按OK,解除警告,再次按OK

对我来说,图标从 Notepad++ 的图标(.txt 文件的默认图标)变为空白文件图标。

当我下次在快捷方式上选择“设置图标”时,Windows会先提示我之前设置的无效路径找不到有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多