创建一个exe程序的快捷方式
记得一定要先定义初始化,同时检测函数的返回值,这是一个好习惯!
BOOL createShortcut(LPCTSTR pszExePath,LPCTSTR pszWorkingDir, LPCTSTR pszDescription, LPCTSTR pszIconPath, LPCTSTR pszDestinationPath)
{
CoInitialize(NULL);
IShellLink* pShellLink = NULL;
HRESULT hres;
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLink, (void**)&pShellLink);
std::cout<< std::hex << hres <<std::endl;
if (SUCCEEDED(hres))
{
pShellLink->SetPath(pszExePath);
pShellLink->SetDescription(pszDescription);
pShellLink->SetIconLocation(pszIconPath,0);
pShellLink->SetWorkingDirectory(pszWorkingDir);
IPersistFile *pPersistFile;
hres = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
if (SUCCEEDED(hres))
{
hres = pPersistFile->Save(pszDestinationPath,TRUE);
pPersistFile->Release();
}
else
{
std::cout<<"ERRO 2"<<std::endl;
return FALSE;
}
pShellLink->Release();
}
else
{
std::cout<<"ERRO 1"<<std::endl;
return FALSE;
}
CoUninitialize();
return TRUE;
}
VS2012 亲测,完美通过。
希望对大家有用处