ショートカットの作成

Win32 APIで、ショートカットファイルを作成する方法のメモです。
COMの機能を使います。

いつもどおり詳しい解説無しでサンプルです。

HRESULT hRes;
IShellLink *isLink = NULL;
IPersistFile *ipFile = NULL;
WCHAR wPath[MAX_PATH+1];

//COMを初期化
CoInitialize(NULL);

//IShellLinkを取得
hRes = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID *)&isLink);
if(SUCCEEDED(hRes)){
//パスの設定
isLink->SetPath("c:\\cmd.exe");
//実行時引数(スイッチ)の設定
isLink->SetArguments("/?");
//作業フォルダの設定
isLink->SetWorkingDirectory("c:\\");

//IPersistFileを取得
hRes = isLink->QueryInterface(IID_IPersistFile,(void**)&ipFile);
if(SUCCEEDED(hRes)){
//パスをマルチバイトに変換
MultiByteToWideChar(CP_ACP,0,"c:\\cmd.lnk",-1,wPath,MAX_PATH);
//ディスクに保存する
hRes = ipFile->Save(wPath,TRUE);
//IPersistFileの破棄
ipFile->Release();
}

//IShellLinkを破棄
isLink->Release();
}else{
//失敗
}

//COMの破棄
CoUninitialize();

ポイント?としては「MultiByteToWideChar」を使用してパスのデータを変換する必要が あることでしょうか。

詳しく調べるには↓のリンクへ
IShellLinkで、ぐぐる。
IPersistFileで、ぐぐる。