以编程方式更改ShortCut图标

Zeb*_*dee 3 delphi winapi shortcut

我使用以下代码创建快捷方式。

  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);
Run Code Online (Sandbox Code Playgroud)

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

例如,我在桌面上创建NOTEPAD.EXE的快捷方式。所以我该如何更改其图标。当您右键单击快捷方式时,选择属性,然后您会看到一个名为“ CHANGE ICON”的按钮,这就是我想要的。

我该如何使用代码呢?

Zeb*_*dee 5

谢谢@Jonahatan

链接 IShellLinkW :: SetIconLocation方法

代码样例

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