[PR]

ショートカットファイル(.lnk)を作成する

戻る

 ショートカットファイルを作成する関数を作る。

//*********************************************************
// ショートカットファイルを作成する
//     LinkFile ……… ショートカットファイルの名前(*.lnk)
//   TargetFile ……… リンク先
//    Arguments ……… コマンドライン引数
//      WorkDir ……… 作業ディレクトリ
//      ShowCmd ……… 実行時の大きさ
//*********************************************************
BOOL
CreateShellLink
	(
		const char *LinkFile,
		const char *TargetFile,
		const char *Arguments,
		const char *WorkDir,
		      int   ShowCmd
	)
{
	IShellLink *psl;
	WCHAR       wcLinkFile[MAX_PATH+1];

	CoInitialize( NULL );
	if ( S_OK == CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl ) )
	{
		psl->SetPath( TargetFile );                           // リンク先を設定
		if ( Arguments ) psl->SetArguments( Arguments );      // コマンドライン引数を設定
		if ( WorkDir   ) psl->SetWorkingDirectory( WorkDir ); // 作業フォルダを設定
		psl->SetShowCmd( ShowCmd );                           // 実行時の大きさを設定

		MultiByteToWideChar( CP_ACP, 0, LinkFile, -1, wcLinkFile, MAX_PATH ); 
		if ( SaveShellLink( psl, wcLinkFile, TRUE ) ) // ショートカットの保存
		{
			psl->Release();
			CoUninitialize();
			return TRUE; // 成功
		}
		psl->Release();
	}
	CoUninitialize();
	return FALSE; // 失敗
}//CreateShellLink

//*********************************************************
// SaveShellLink
//*********************************************************
BOOL
SaveShellLink
	(
		      IShellLink *psl,
		const WCHAR      *wcLinkName,
		      BOOL        bRemember
	)
{
	HRESULT       hResult;
	IPersistFile *ppf;

	if ( S_OK != psl->QueryInterface( IID_IPersistFile, (void **)&ppf ) )
		return FALSE;

	hResult = ppf->Save( wcLinkName, bRemember );
	ppf->Release();
	return S_OK == hResult;
}//SaveShellLink

関連

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



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

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

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