創建一個exe程序的快捷方式
記得一定要先定義初始化,同時檢測函數的返回值,這是一個好習慣!
[cpp]
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;
}
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;
}