创建一个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 亲测,完美通过。
希望对大家有用处