LPCTSTR szPath; //快捷方式指向的应用程序文件
LPCTSTR szLink; //快捷方式存放的位置
szPath="D://RedVIP5//VIP.exe";
//获得系统桌面或开始程序菜单位置
TCHAR szPathd[MAX_PATH];
//SHGetSpecialFolderPath(NULL,szPathd,CSIDL_DESKTOPDIRECTORY,FALSE);
SHGetSpecialFolderPath(NULL,szPathd,CSIDL_PROGRAMS,FALSE);
strcat(szPathd,"//VIP.lnk"); //链接快捷方式路径
szLink=szPathd;
CoInitialize(NULL);
HRESULT hres;
IShellLink* psl;
IPersistFile* ppf;
WORD wsz[MAX_PATH] ;
//创建一个IShellLink实例
hres = CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&psl);
if(S_OK==hres)
{
MessageBox("CoCreateInstance成功");
//return;
}
else
{
MessageBox("CoCreateInstance失败");
//return;
}
//设置目标应用程序
psl->SetPath(szPath);
psl->SetWorkingDirectory(tmppath);//设置目标程序工作路径
//设置快捷键(此处设为Shift+Ctrl+'R')
//psl -> SetHotkey(MAKEWORD('R',HOTKEYF_SHIFT |HOTKEYF_CONTROL));
//从IShellLink获取其IPersistFile接口
//用于保存快捷方式的数据文件 (*.lnk)
hres=psl->QueryInterface(IID_IPersistFile,(void**)&ppf);
if(S_OK==hres)
{
MessageBox("QueryInterface成功");
//return;
}
else
{
MessageBox("QueryInterface失败");
//return;
}
// 确保数据文件名为ANSI格式
int c=MultiByteToWideChar(CP_ACP,0,szLink,-1,wsz,MAX_PATH);
CString s;
s.Format("%d",c);
MessageBox(s);
//调用IPersist:Save
//保存快捷方式的数据文件 (*.lnk)
//hres=ppf->Save(wsz,STGM_READWRITE);
hres=ppf->Save(wsz,FALSE);
if(S_OK==hres)
MessageBox("Save成功");
else
MessageBox("Save失败");
//释放IPersistFile和IShellLink接口
ppf->Release();
psl->Release();
CoUninitialize();