我写了这个函数(其实不是写的,是从书上抄来的),在安装程序中调用它,来为要安装的程序添加快捷方式:
BOOL CreateShortcut(LPCTSTR szProgPath, LPCTSTR szShortcut)
{
IShellLink* pISL;
IPersistFile* pIPF;
HRESULT hr;
WCHAR wszShortcut[MAX_PATH];
hr=::CoCreateInstance(CLSID_ShellLink, NULL, 1, IID_IShellLink, (LPVOID*)&pISL);
if(FAILED(hr))
{
return FALSE;
}
pISL->SetPath(szProgPath);
pISL->SetShowCmd(SW_SHOWNORMAL);
hr=pISL->QueryInterface(IID_IPersistFile, (void * *)&pIPF); if(FAILED(hr))
{
pISL->Release();
return FALSE;
} ::MultiByteToWideChar(0, 0, szShortcut, -1, wszShortcut,MAX_PATH);
hr=pIPF->Save(wszShortcut, FALSE);
pIPF->Release();
pISL->Release();
if(FAILED(hr))
return FALSE; ::SHChangeNotify(SHCNE_ALLEVENTS,SHCNF_PATH|SHCNF_FLUSH, szShortcut, 0); return TRUE;
}但是在执行时,API CoCreateInstance()无法正确返回。
请问怎么回事?!怎么办?!