外壳扩展创建快捷方式和获取快捷方式的目标对象
2007-11-03 22:00
381 查看
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
uses
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Windows,ComObj,ShlObj,ActiveX;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
函数功能:创建指定文件的快捷方式
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TargetFile: 快捷方式指向的文件或目录
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CreateAt: 创建的快捷方式保存路径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
函数返回True表示操作成功,False表示失败
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function CreateShortCut(TargetFile,CreateAt:string):Boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
intfLink:IShellLink;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IntfPersist:IPersistFile;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
and SUCCEEDED(intfLink.SetPath(PAnsiChar(TargetFile))) and
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SUCCEEDED(IntfPersist.Save(PWideChar(WideString(CreateAt)),True));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
函数功能:返回指定快捷方式的目标文件
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
LinkFile: 快捷方式文件完整路径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
函数返回空字符串时表示失败,否则成功
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function GetTargetOfShorCut(LinkFile:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IID_IPersistFile:TGUID = '{0000010B-0000-0000-C000-000000000046}';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
intfLink:IShellLink;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IntfPersist:IPersistFile;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pfd:_WIN32_FIND_DATA;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bSuccess:Boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result:='';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IntfLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SetString(Result,nil,MAX_PATH);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Load方法的第二个参数还可以传递STGM_WRITE或STGM_READWRITE,表示对快捷方式信息的访问权限
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
STGM_READ:只读
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
STGM_WRITE:只写
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
STGM_READWRITE:读写
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
GetPath方法的第三个参数还可以传递SLGP_UNCPRIORITY或SLGP_SHORTPATH,表示返回的目标路径格式
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SLGP_UNCPRIORIT:UNC网络路径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SLGP_SHORTPATH :DOS 8.3格式路径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SLGP_RAWPATH : 长路径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bSuccess:=(IntfLink<>nil) and SUCCEEDED(IntfLink.QueryInterface(IID_IPersistFile,IntfPersist))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
and SUCCEEDED(IntfPersist.Load(PWideChar(WideString(LinkFile)),STGM_READ)) and
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SUCCEEDED(intfLink.GetPath(PAnsiChar(Result),MAX_PATH,pfd,SLGP_RAWPATH));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if not bSuccess then Result:='';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
除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
相关文章推荐
- 如何使用C#操作快捷方式(获取快捷方式属性、创建快捷方式)
- VC获取快捷方式的目标和参数
- 创建目标为网址的快捷方式 *.URL
- 创建一个用于建立快捷方式的COM 对象并取得IShellLink 接口。
- Windows 中如何创建一个指向某相对路径的快捷方式(即快捷方式的目标路径为某相对路径)
- C#如何获取快捷方式指向的目标文件
- 获取快捷方式的目标文件,并删除无效快捷方式和目标文件不在系统盘的快捷方式
- 如何使用C#操作快捷方式(获取快捷方式属性、创建快捷方式)
- python创建桌面快捷方式(pythonwin)及从快捷方式获取文件路径
- C#如何获取快捷方式指向的目标文件
- VS2015C#使用Install Shield创建快捷方式为何属性中“目标”和“目标位置”为灰色
- Java获取匿名类对象(通过new接口、抽象类等方式创建)的方法上的注解
- 创建快捷方式,如何保证移动目标文件后可以正常使用
- C#通过获取快捷方式指向目标的小示例触碰WMI
- webkit的js对象扩展(一)——binding方式创建自定义对象(单实例)
- Android 快捷方式的创建与查询 快捷方式问题大全 获取快捷方式在Launcher数据库中的信息 Failed to find provider info for com.android.la
- webkit的js对象扩展(一)——binding方式创建自定义对象(单实例)
- IShellLink获取快捷方式的真正地址(创建WIN32后台程序)
- webkit的js对象扩展(二)——binding方式创建自定义对象(多实例)
- 获取快捷方式的目标和参数