- ディレクトリ有無確認
- ディレクトリをまとめて作成
- システムの特殊フォルダのパス名取得
- CSIDL値
PathIsDirectory()でディレクトリの有無を確認できます。
BOOL PathIsDirectory( IN LPCTSTR Path ); |
|
| 説明 | パスが有効なディレクトリかどうかを調べる。 |
|---|---|
| 引数 |
|
| 戻り値 | パスがディレクトリの場合はTRUE、それ以外の場合はFALSEを返す。 |
ディレクトリが存在しない場合、ルート側から順に作成していかなければなりませんが、MakeSureDirectoryPathExists()を使用するとまとめて作成できます。
BOOL MakeSureDirectoryPathExists( PCSTR DirPath ); |
|
| 説明 | 指定された全てのディレクトリを作成する。 |
|---|---|
| 引数 |
|
| 戻り値 | 成功した場合はTRUE、失敗した場合はFALSEを返す。 |
SHGetSpecialFolderPath() でシステム特殊フォルダのパス名を取得できます。
HRESULT SHGetSpecialFolderLocation( HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl ); |
|
| 説明 | 特殊フォルダの ITEMIDLIST 構造体へのポインタ(PIDL)を取得する。 |
|---|---|
| 引数 |
|
| 戻り値 | 成功した場合はS_OK(0)、失敗した場合はOLE定義のエラー値を返す。 |
hwndOwnerは予約領域なので、とりあえずNULLを指定しておきます。
//=============================================================================//
// 特殊フォルダパス名取得
//
// [引数]
// pathName:
// パス名を格納するバッファを指定する。
//
// nFolder:
// 取得対象フォルダを表すCSIDL値を指定する。
//
// [戻り値]
// TRUE :成功
// FALSE :失敗
//
BOOL GetSpecialFolderPath(
LPTSTR pathName, // [o] パス名を格納するバッファ
int nFolder ) // [i] フォルダを表すCSIDL値
{
BOOL bRet = FALSE;
IMalloc* pMalloc = NULL;
//==== IMallocインターフェース取得 ====//
if(SHGetMalloc(&pMalloc) == NOERROR)
{
LPITEMIDLIST pidl;
//==== アイテムIDリスト取得 ====//
if(SHGetSpecialFolderLocation(NULL, nFolder, &pidl) == NOERROR)
{
//==== パス取得 ====//
if(SHGetPathFromIDList(pidl, pathName))
{
bRet = true;
}
pMalloc->Free(pidl);
}
pMalloc->Release();
}
return bRet;
}
準備中。