- ディレクトリ有無確認
- ディレクトリをまとめて作成
- システムの特殊フォルダのパス名取得
- 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; }
準備中。