【问题标题】:How find shortcut name by program name?如何通过程序名称查找快捷方式名称?
【发布时间】:2020-07-17 21:34:15
【问题描述】:

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

例如:

文件名:

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

结果:

  • C:\Users\Public\Desktop\Firefox.lnk

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

【问题讨论】:

    标签: windows delphi delphi-10.3-rio shortcut-file


    【解决方案1】:

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

    【讨论】:

    • "open them",我不明白。如何?你想说:处决他们?请对此给出更好的解释。
    猜你喜欢
    • 2012-01-31
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多