您的位置:首页 > 其它

如何读取快捷方式的信息和生成一个快捷方式?

2011-11-28 17:13 369 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: