https://blog.csdn.net/dbyoung/article/details/7020324
如何读取快捷方式的信息和生成一个快捷方式?
-
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
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发