delphi 读和写快捷方式的信息(实测读有效,写未试)

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值