備忘録です。
面倒な説明はいいから、とにかくWindowsシェルのショートカット(*.lnk)ファイルを作成したい、という方のための参考にどうぞ。
#include <objbase.h>
#include <ShlObj.h>
int main(int argc, char **argv)
{
HRESULT hr;
CoInitialize(0);
IShellLink *pShellLink;
IPersistFile *pPersistFile;
hr = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pShellLink);
if (SUCCEEDED(hr)) {
hr = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
if (SUCCEEDED(hr)) {
pShellLink->SetPath(L"C:\\Windows\\notepad.exe");
pShellLink->SetIconLocation(L"C:\\Windows\\notepad.exe", 0);
pPersistFile->Save(L"C:\\text.lnk", TRUE);
pPersistFile->Release();
}
pShellLink->Release();
}
CoUninitialize();
return 0;
}