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

How find shortcut name by program name?

有什么方法可以通过关联的程序名称找到快捷方式的名称(存在于桌面上)?

例如:

文件名:

结果:

我找到了something near to this,但是是相反的方式(returns通过快捷方式名称关联的程序名称)。

应用程序不知道为指向它而创建的快捷方式,因此这是不可能的。您必须遍历用户桌面文件夹中的每个文件以查找快捷方式文件,使用 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;