您的位置:首页 > 其它

外壳扩展创建快捷方式和获取快捷方式的目标对象

2007-11-03 22:00 381 查看

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;


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
SetHotkey
SetIconLocation
SetIDList
SetPath
SetRelativePat
SetShowCmd
SetWorkingDirectory
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐