◆ デスクトップフォルダのパスを取得する

  • デスクトップフォルダへのパスはOSによって異なります。
  • 以下にデスクトップフォルダへのフルパスを取得する方法を示します。

!ポイント
  • SHELL関数を使用する.
    デスクトップフォルダや、スタートアップフォルダといった特殊フォルダは、環境によってパスが異なる場合があります。 正確なパスを取得するにはSHELL関数を使用します。
  • SHELLのIMallocインターフェースへのポインタを取得する.
    SHELL関数を使用する前に、SHELLのIMallocインターフェースへのポインタを取得する必要があります (SHGetMalloc関数)。
    また、使用後はポインタを解放します(Free,Release)。

必要なヘッダファイル
"shlobj.h"

関数宣言部

//関数のプロトタイプ宣言
void	GetDeskTopFolder( LPSTR lpszPath );

関数定義部
/*
 * Function Name:GetDeskTopFolder( LPSTR lpszPath );
 *
 * Param	:LPSTR	lpszPath フォルダパスを受け取るバッファポインタ
 * Return	:NONE	
 * Description	:デスクトップフォルダへのフルパスを lpszPath に取得する。
 */
void GetDeskTopFolder( LPSTR lpszPath )
{
	ITEMIDLIST*	pidl;
	LPMALLOC	pMalloc;

	if( SUCCEEDED(SHGetMalloc(&pMalloc)) )
	{
		//特殊フォルダのITEMIDList取得
		SHGetSpecialFolderLocation(
				GetDesktopWindow(),
				CSIDL_DESKTOP,//デスクトップフォルダを指定
				&pidl );

		//ITEMIDLISTからパスを取得
		SHGetPathFromIDList( pidl, lpszPath );

		//解放
		pMalloc->Free( pidl );
		pMalloc->Release();
	}
}


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