c++ windows 创建快捷方式

2014-11-24 01:21:30 · 作者: · 浏览: 3

创建一个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 <
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"< return FALSE;
}

pShellLink->Release();
}
else
{
std::cout<<"ERRO 1"< 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 <

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"< return FALSE;
}

pShellLink->Release();
}
else
{
std::cout<<"ERRO 1"< return FALSE;
}
CoUninitialize();
return TRUE;
}