获取快捷方式的目标和参数
2010-01-29 16:27
701 查看
来源: 作者: 2006-10-20 出处:pcdog.com
我看了Michael Taupitz关于建立快捷方式的方法,我认为有很多时候当我
们在命令行模式中偶然发现一个快捷方式的时候,我们不知道这个.lnk文件指
向什么地方。
我写了一个函数,它以CString的形式返回了.lnk文件的目标和参数。
CString GetShortcutTarget(const CString LinkFileName)
{
HRESULT hres;
CString Link, Temp = LinkFileName;
Temp.MakeLower();
if (Temp.Find(".lnk")==-1) //Check if the name ends with .lnk
Link = LinkFileName + ".lnk"; //if not, append it
else
Link = LinkFileName;
CString Info;
Info.Empty();
IShellLink* psl;
//Create the ShellLink object
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl);
if (SUCCEEDED(hres))
{
IPersistFile* ppf;
//Bind the ShellLink object to the Persistent File
hres = psl->QueryInterface( IID_IPersistFile, (LPVOID *) &ppf);
if (SUCCEEDED(hres))
{
WORD wsz[MAX_PATH];
//Get a UNICODE wide string wsz from the Link path
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Link, -1, wsz, MAX_PATH);
//Read the link into the persistent file
hres = ppf->Load(wsz, 0);
if (SUCCEEDED(hres))
{
//Read the target information from the link object
//UNC paths are supported (SLGP_UNCPRIORITY)
psl->GetPath(Temp.GetBuffer(1024), 1024, NULL, SLGP_UNCPRIORITY);
Temp.ReleaseBuffer();
Info = Temp;
//Read the arguments from the link object
psl->GetArguments(Temp.GetBuffer(1024), 1024);
Temp.ReleaseBuffer();
Info += " " + Temp;
}
}
}
psl->Release();
//Return the Target and the Argument as a CString
return Info;
}
我看了Michael Taupitz关于建立快捷方式的方法,我认为有很多时候当我
们在命令行模式中偶然发现一个快捷方式的时候,我们不知道这个.lnk文件指
向什么地方。
我写了一个函数,它以CString的形式返回了.lnk文件的目标和参数。
CString GetShortcutTarget(const CString LinkFileName)
{
HRESULT hres;
CString Link, Temp = LinkFileName;
Temp.MakeLower();
if (Temp.Find(".lnk")==-1) //Check if the name ends with .lnk
Link = LinkFileName + ".lnk"; //if not, append it
else
Link = LinkFileName;
CString Info;
Info.Empty();
IShellLink* psl;
//Create the ShellLink object
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl);
if (SUCCEEDED(hres))
{
IPersistFile* ppf;
//Bind the ShellLink object to the Persistent File
hres = psl->QueryInterface( IID_IPersistFile, (LPVOID *) &ppf);
if (SUCCEEDED(hres))
{
WORD wsz[MAX_PATH];
//Get a UNICODE wide string wsz from the Link path
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Link, -1, wsz, MAX_PATH);
//Read the link into the persistent file
hres = ppf->Load(wsz, 0);
if (SUCCEEDED(hres))
{
//Read the target information from the link object
//UNC paths are supported (SLGP_UNCPRIORITY)
psl->GetPath(Temp.GetBuffer(1024), 1024, NULL, SLGP_UNCPRIORITY);
Temp.ReleaseBuffer();
Info = Temp;
//Read the arguments from the link object
psl->GetArguments(Temp.GetBuffer(1024), 1024);
Temp.ReleaseBuffer();
Info += " " + Temp;
}
}
}
psl->Release();
//Return the Target and the Argument as a CString
return Info;
}
相关文章推荐
- VC获取快捷方式的目标和参数
- 获取快捷方式的目标和参数
- C#如何获取快捷方式指向的目标文件
- 获取快捷方式的目标文件,并删除无效快捷方式和目标文件不在系统盘的快捷方式
- C#通过获取快捷方式指向目标的小示例触碰WMI
- 获取快捷方式里面的参数(BCB)
- 两种版本实现C#获取快捷方式目标路径的代码
- 外壳扩展创建快捷方式和获取快捷方式的目标对象
- C#如何获取快捷方式指向的目标文件
- C#如何获取快捷方式指向的目标文件
- C#如何获取快捷方式指向的目标文件
- springmvc 获取请求参数的几种方式
- python web应用开发中获取各种参数的方式
- 在ASP.NET中获取参数POST和GET方式提交的参数
- 4种方式获取客户机的请求参数
- 微信JS-SDK说明文档---自己总结了config时的参数获取方式
- WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式
- 一些快捷方式没有目标路径的原因
- Action获取请求参数的三种方式
- VS打包后生成快捷方式:目标指向错误、Icon图标分辨率有误问题解决方案