Delphi 外壳扩展创建快捷方式和获取快捷方式的目标对象
2022-12-28 10:52:07 作者:admin
本文整理自网络,侵删。
uses Windows,ComObj,ShlObj,ActiveX;
{ 函数功能:创建指定文件的快捷方式 TargetFile: 快捷方式指向的文件或目录 CreateAt: 创建的快捷方式保存路径 函数返回True表示操作成功,False表示失败}function CreateShortCut(TargetFile,CreateAt:string):Boolean;const IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';var intfLink:IShellLink; IntfPersist:IPersistFile;begin IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink; Result:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist)) and SUCCEEDED(intfLink.SetPath(PAnsiChar(TargetFile))) and SUCCEEDED(IntfPersist.Save(PWideChar(WideString(CreateAt)),True));end;
{ 函数功能:返回指定快捷方式的目标文件 LinkFile: 快捷方式文件完整路径 函数返回空字符串时表示失败,否则成功}
function GetTargetOfShorCut(LinkFile:string):string;const IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';var intfLink:IShellLink; IntfPersist:IPersistFile; pfd:_WIN32_FIND_DATA; // delphi10.4 是 _WIN32_FIND_DATAW bSuccess:Boolean;begin Result:=''; IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink; SetString(Result,nil,MAX_PATH); { Load方法的第二个参数还可以传递STGM_WRITE或STGM_READWRITE,表示对快捷方式信息的访问权限 STGM_READ:只读 STGM_WRITE:只写 STGM_READWRITE:读写 GetPath方法的第三个参数还可以传递SLGP_UNCPRIORITY或SLGP_SHORTPATH,表示返回的目标路径格式 SLGP_UNCPRIORIT:UNC网络路径 SLGP_SHORTPATH :DOS 8.3格式路径 SLGP_RAWPATH : 长路径 } bSuccess:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist)) and SUCCEEDED(IntfPersist.Load(PWideChar(WideString(LinkFile)),STGM_READ)) and SUCCEEDED(intfLink.GetPath(PAnsiChar(Result),MAX_PATH,pfd,SLGP_RAWPATH)); if not bSuccess then Result:='';end;
除SetPath和GetPath方法外,IShellLink接口的其它方法可以设置或读取快捷方式的其它信息:GetArguments:获得参数信息 GetDescription:获得描述信息GetHotkey:获得快捷键GetIconLocation:获得图标 GetIDList:获得快捷方式的目标对象的item identifier list (Windows外壳中的每个对象如文件,目录和打印机等都有唯一的item identifiler list)GetPath: 获得快捷方式的目标文件或目录的全路径GetShowCmd:获得快捷方式的运行方式,比如常规窗口,最大化GetWorkingDirectory:获得工作目录 Resolve:按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名下面是对应信息的设置方法SetArguments SetDescription SetHotkeySetIconLocationSetIDListSetPathSetRelativePatSetShowCmdSetWorkingDirectory
转载于:https://www.cnblogs.com/blogpro/p/11453890.html
相关阅读 >>
Delphi中三种方法获取windows任务栏的高度
Delphi 动态调用chm文件
Delphi like 通配符的使用
Delphi 的 webservice 的 cookie 操作
Delphi 通过控件句柄获取控件实例
Delphi jpg文件合并器代码
Delphi 模糊查询和字段查询
Delphi 弹出输入框的inputquery, inputquery 函数用法
Delphi 侧边栏隐藏窗体
Delphi中string与pansichar转换
更多相关阅读请进入《Delphi》频道 >>
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678
微信公众号
微信二维码