[PR]

ショートカットファイル(.lnk)に
ショートカットキーを設定する

戻る

 ショートカットファイルにショートカットキーを設定する関数を作る。

//*********************************************************
// ショートカットにショートカットキーを設定する
//   LinkFile ……… ショートカットファイルの名前(*.lnk)
//         Hk ……… 特殊キーの組み合わせ(HOTKEYF_ALT | HOTKEYF_SHIFT など)
//         Vk ……… 仮想キーコード(VK_UP や VK_NUMPAD0 など)
//*********************************************************
BOOL
SetShellLinkHotkey
	(
		const char *LinkFile,
		      BYTE  Hk,
		      BYTE  Vk
	)
{
	IShellLink *psl;
	WCHAR       wcLinkFile[MAX_PATH+1];

	CoInitialize( NULL );
	if ( S_OK == CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl ) )
	{
		MultiByteToWideChar( CP_ACP, 0, LinkFile, -1, wcLinkFile, MAX_PATH ); 
		if ( LoadShellLink( psl, wcLinkFile, STGM_READ ) )  // ショートカットのロード
		{
			psl->SetHotkey( MAKEWORD( Vk, Hk ) ); // ショートカットキーの設定

			if ( SaveShellLink( psl, wcLinkFile, TRUE ) ) // ショートカットの保存
			{
				psl->Release();
				CoUninitialize();
				return TRUE; // 成功
			}
		}
		psl->Release();
	}
	CoUninitialize();
	return FALSE; // 失敗
}//SetShellLinkHotkey

関連

ショートカットファイル(.lnk)を作成する
ショートカットファイル(.lnk)のリンク先を取得する
関数 CoCreateInstance() を使用したコードでコンパイルエラーがでる
インターフェイス(IMalloc, IShellLink など)を使用したコードでコンパイルエラーがでる


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。