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.