unit untLnkInfo;
interface
uses Windows, ActiveX, ComObj, ShlObj;
type
TLINK_FILE_INFO = record
Filename: array [0 .. MAX_PATH] of Char; { 目标文件名 }
WorkDirectory: array [0 .. MAX_PATH] of Char; { 工作目录或者起始目录 }
IconLocation: array [0 .. MAX_PATH] of Char; { 图标文件名 }
IconIndex: Integer; { 图标索引 }
Arguments: array [0 .. MAX_PATH] of Char; { 程序运行的参数 }
Description: array [0 .. 255] of Char; { 快捷方式的描述 }
ItemIDList: PItemIDList; { 只供读取使用 }
RelativePath: array [0 .. 255] of Char; { 相对目录,只能设置 }
ShowState: Integer; { 运行时的窗口状态 }
HotKey: Word; { 快捷键 }
end;
{ 读取快捷方式信息 }
procedure GetLinkFileInfo(LnkFileName: String; var LnkInfo: TLINK_FILE_INFO);
implementation
{ 读取快捷方式信息 }
procedure GetLinkFileInfo(LnkFileName: String; var LnkInfo: TLINK_FILE_INFO);
var
LnkObj : IUnknown;
ShellPFile : IPersistFile;
ShellLink : IShellLink;
WideFileName: WideString;
pfd : WIN32_FIND_DATA;
begin
FillChar(LnkInfo, SizeOf(LnkInfo), #0);
LnkObj := CreateComObject(CLSID_ShellLink);
ShellPFile := LnkObj as IPersistFile;
ShellLink := LnkObj as IShellLink;
WideFileName := LnkFileName;
ShellPFile.Load(PWideChar(WideFileName), 0);
ShellLink.GetPath(LnkInfo.Filename, MAX_PATH, pfd, SLGP_UNCPRIORITY); { 获取快捷方式文件路径 }
ShellLink.GetWorkingDirectory(LnkInfo.WorkDirectory, MAX_PATH); { 获取快捷方式工作目录 }
ShellLink.GetIconLocation(LnkInfo.IconLocation, MAX_PATH, LnkInfo.IconIndex); { 获取快捷方式图标文件,和图标索引 }
ShellLink.GetArguments(LnkInfo.Arguments, MAX_PATH); { 获取快捷方式运行参数 }
ShellLink.GetDescription(LnkInfo.Arguments, MAX_PATH); { 获取快捷方式描述 }
ShellLink.GetShowCmd(LnkInfo.ShowState); { 获取快捷方式运行方式,1:常规窗体;2:最小化;3:最大化 }
ShellLink.GetHotkey(LnkInfo.HotKey); { 获取快捷方式快捷键 }
ShellLink := nil;
ShellPFile := nil;
end;
{ 注:
发现没有,获取都是用 ShellLink.Get...,
所以,创建,就是ShellLink.Set...了,自己动手写写了。
这里就不罗嗦了。
}
end.如何读取快捷方式的信息和生成一个快捷方式?
最新推荐文章于 2021-05-17 10:27:59 发布
本文详细介绍了如何通过Windows API(如ShellLink)来解析和获取快捷方式文件(lnk)中的关键信息,包括目标文件名、工作目录、图标文件名、图标索引、运行参数、描述、窗口状态、快捷键等。
2230

被折叠的 条评论
为什么被折叠?



