MFC创建桌面快捷方式

把这个函数复制到自己的工程中:使用中注意LPSTR和CStirng的转换,LPSTR就是CString的buffer。

比如:CString str = "123";

LPSTR lp = str.GetBuffer(255);

BOOL CMyDialog::ShortcutCreateProgramLink(LPSTR szPath,//要创建的应用程序的路径

            LPSTR szLink)//快捷方式的名称,要以(*.lnk)结尾,比如"myexe.lnk"         
{
 
 HRESULT hres;
 
 IShellLink*psl;
 
 IPersistFile*ppf;
 
 WORD wsz[_MAX_PATH];
 
 CoInitialize(0);           // 初始化应用环境
 
 
 //创建一个IShellLink实例
 
 hres=CoCreateInstance(CLSID_ShellLink,NULL,       CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&psl);
 
 if(FAILED(hres)){CoUninitialize(); return FALSE;}
 
 
 
 //设置目标应用程序
 
 psl->SetPath(szPath);
 
 //设置快捷键(此处设为Shift+Ctrl+'A')     
 
 //psl->SetHotkey(MAKEWORD('A', HOTKEYF_SHIFT|HOTKEYF_CONTROL));
 
 psl->SetDescription("Delta Language tool for sycon.net.");
 
 char sPath[_MAX_PATH];     lstrcpy(sPath, szPath);
 
 lstrcpy(strrchr(sPath,'\\'), "\\");
 
 psl->SetWorkingDirectory((LPSTR)sPath);
 
 //psl->SetRelativePath((LPCSTR)sPath,0);
 
 //从IShellLink获取其IPersistFile接口
 
 //用于保存快捷方式的数据文件(*.lnk)
 
 hres=psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
 
 if(FAILED(hres)){CoUninitialize(); return FALSE;}
 
 //确保数据文件名为ANSI格式
 
 MultiByteToWideChar(CP_ACP,0,szLink,-1, wsz,_MAX_PATH);
 
 //调用IPersistFile::Save
 
 //保存快捷方式的数据文件(*.lnk)
 
 hres=ppf->Save(wsz,STGM_READWRITE);
 
 //释放IPersistFile和IShellLink接口
 
 ppf->Release();
 
 psl->Release();
 
 
 
 CoUninitialize();
 
 return TRUE;
 
}

使用方法:比如要创建一个MyEXE.exe的桌面快捷方式

//创建桌面快捷方式

CString soucrPath;   //应用程序的路径

sourcePath = "C:\\MyEXE.exe";
    CString str;

    TCHAR path[255];
    SHGetSpecialFolderPath(0,path,0,0);  //获得桌面路径   关于这个函数,这里有解释:http://blog.youkuaiyun.com/zengweicdut/article/details/8927576
    str = (CString)path;
    str += "\\MyEXE.exe";

    ShortcutCreateProgramLink(sourcePath.GetBuffer(255),str.GetBuffer(255));
    tempTargetPath.ReleaseBuffer();
    str.ReleaseBuffer();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值