如何通过程序名称查找快捷方式名称?

1 windows delphi desktop-shortcut delphi-10.3-rio

有没有办法通过关联的程序名称找到快捷方式的名称(出现在桌面上)?

前任:

文档名称:

  • C:\Program Files\Mozilla Firefox\firefox.exe

并导致:

  • C:\用户\公共\桌面\Firefox.lnk

我发现了一些接近 this 的东西,但以相反的方式制作(通过快捷方式名称返回关联的程序名称)。

Ken*_*ite 5

应用程序对创建的指向它的快捷方式一无所知,因此这是不可能的。您必须遍历用户桌面文件夹中的每个文件以查找快捷方式文件,使用 将它们打开IShellLink,然后查看它们是否启动了您要查找的应用程序。这是一个这样做的例子。您需要添加ShellAPI到您的uses条款。FileName是快捷方式文件的完全限定名称。

function GetLinkPath(const FileName: WideString): String;
var
  ShellLink: IShellLink;
  Path: array[0..MAX_PATH] of Char;
begin
  Result := '';
  ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink;
  if (ShellLink as IPersistFile).Load(PWideChar(FileName), STGM_READ) = 0 then
  begin
    if ShellLink.GetPath(Path, MAX_PATH, nil, SLGP_SHORTPATH) = 0 then
      Result := Path;
  end;
end;
Run Code Online (Sandbox Code Playgroud)