gpt4 book ai didi

delphi - 解决网络快捷方式

转载 作者:行者123 更新时间:2023-12-03 18:30:06 25 4
gpt4 key购买 nike

我通过网络快捷方式向Windows添加了一些FTP服务器。

如何通过WinAPI获取FTP地址?

使用SHGetFolderPath / CSIDL_NETHOOD,我可以获取target.lnk文件的位置。但是,如何获取该文件的FTP URL?

我可以通过以下方式解决“正常” .lnk文件的问题:

  ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink;
ShellLink.QueryInterface(IPersistFile, PersistFile);
PersistFile.Load('C:\Test.lnk', STGM_READ);
ShellLink.Resolve(WindowHandle, 0);
Filename[0] := #0;
ShellLink.GetPath(PChar(@Filename[0]), Length(Filename), pfd, 0);


...,但这不适用于 ftp://host/地址的网络快捷方式的Target.lnk文件。

最佳答案

IShellLink::GetPath用于检索文件系统路径(仅驱动器号或UNC根)。从文档中尚不清楚,但是它在内部使用SHGetPathFromIDListEx,而MSDN对此功能的说法如下:


将项目标识符列表转换为文件系统路径


如果您想要原始快捷方式目标,则最好的选择通常是IShellLink::GetIDList。您可以使用id列表上的SHGetNameFromIDList(..., SIGDN_DESKTOPABSOLUTEPARSING, ...)获得解析名称。

关于delphi - 解决网络快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46193278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com