◆ ショートカットファイルを作成する

  • ショートカットファイルの作成方法を以下に示します。

!ポイント
  • COMを使用する.
    ショートカットファイルを作成するには COMインタフェースを使用します。
    具体的には IShellLinkインタフェースによりリンクを設定し、IPersistFileインタフェースでファイル作成を行います。
  • 必要な情報は2つ.
    ショートカットファイル作成の際必要となる情報は2つ。
    • ショートカットファイルをどこに置くか(デスクトップ上 etc.)、
    • どのファイルとリンクさせるか。
    上記2つを指定して、下記の関数に渡すことで、ショートカットファイルの作成が可能となる。

必要なヘッダファイル
"objbase.h"
"objidl.h"
"winnls.h"

関数宣言部

//関数のプロトタイプ宣言
BOOL CreateLinkFile( LPCTSTR    lpszShortCut,
                   LPCTSTR        lpDes,
                   LPCTSTR        lpszTarget );

関数定義部
/*
 * Function Name:CreateLinkFile
 *
 * Param	:LPSTR	lpszShortCut ショートカットファイルの保存先フルパス
 *		 LPSTR	lpDes
 *		 LPSTR	lpszTarget ショートカットファイルのリンク先フルパス
 *
 * Return	:TRUE…ショートカット作成に成功	FALSE…失敗
 * Description	:
 */
BOOL CreateLinkFile( LPCTSTR    lpszShortCut,
                   LPCTSTR        lpDes,
                   LPCTSTR        lpszTarget )
{
	BOOL		bRet = FALSE;
	hRes		hRes;
	IShellLink*	psl;

	//COMの初期化
	CoInitialize(NULL);
	//IShellLinkオブジェクトの作成
	hRes = CoCreateInstance( CLSID_ShellLink, NULL,
                               CLSCTX_INPROC_SERVER,	
                               IID_IShellLink, (void **)&psl );	

	if( SUCCEEDED(hRes) )
	{
		IPersistFile* ppf;
		//IPersistFileインタフェース取得
		hRes = psl->QueryInterface( IID_IPersistFile,
						(void **)&ppf );

		if( SUCCEEDED(hRes))
		{
			WCHAR    wShct[MAX_PATH];

			hRes = psl->SetPath(lpszTarget);
			if( SUCCEEDED(hRes))
			{
				hRes = psl->SetDescription(lpDes);
				if( SUCCEEDED(hRes))
				{
					MultiByteToWideChar( CP_ACP,
							0,
							lpszShortCut,
							-1,
							wShct,
							MAX_PATH );

					hRes = ppf->Save(wShct,TRUE);
					if( SUCCEEDED(hRes))
					bRet = TRUE;
				}
			}
			ppf->Release();
		}
		psl->Release();
	}
	//COMのクローズ
	CoUninitialize();
	return bRet;
}


サンプルプログラム(ソース)のダウンロード
戻る