以编程方式更改快捷方式图标

Change ShortCut Icon programmatically

我用以下代码创建了一个快捷方式。

  var MyObject  : IUnknown;
  var MySLink   : IShellLink;
  var MyPFile   : IPersistFile;

  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink  := MyObject as IShellLink;
  MyPFile  := MyObject as IPersistFile;
  with MySLink do
  begin
    SetPath(PChar(sExePath + sExeName));
    SetArguments(PChar (sParams));
    SetWorkingDirectory(PChar(sExePath));
  end;
  MyPFile.Save(PWChar(WideString(GetDesktopFolder + '\MyApp.lnk')), False);

但是我想更改快捷方式图标。

例如,我在桌面上创建了 NOTEPAD.EXE 的快捷方式。所以我怎样才能改变它的图标。 当您右键单击快捷方式时,选择属性,然后您可以看到一个名为 "CHANGE ICON" 的按钮,这就是我想要的。

我如何使用代码做到这一点?

感谢@Jonahatan

友情链接 IShellLinkW::SetIconLocation method

代码示例

  with MySLink do
  begin
    SetPath(PChar(sExePath + sExeName));
    SetArguments(PChar (sParams));
    SetWorkingDirectory(PChar(sExePath));
    SetIconLocation(PWideChar(sNewIconFileName),0);
  end;