ごみ箱、タスクスケジューラなどの特殊フォルダを開く2つの方法について説明します。 関数 ShellExecuteEx() を利用する方法
関数 ShellExecuteEx() では、実行するファイルやフォルダの指定にアイテムIDリストを使用することができます。 例: // マイコンピュータを開く例です。 // 関数 SHGetSpecialFolderLocation() の第2引数に CSIDL_DRIVES を指定して、 // マイコンピュータのアイテムIDリスト取得しています。 int main( void ) { IMalloc *pMalloc; // ITEMIDLIST *pidlMyComputer; // マイコンピュータのアイテムIDリスト SHELLEXECUTEINFO sei; // if ( NOERROR == SHGetMalloc( &pMalloc ) ) { if ( NOERROR == SHGetSpecialFolderLocation( HWND_DESKTOP, CSIDL_DRIVES, &pidlMyComputer ) ) { memset( &sei, 0, sizeof( sei ) ); sei.cbSize = sizeof( sei ); sei.fMask = SEE_MASK_IDLIST; sei.hwnd = HWND_DESKTOP; sei.lpIDList = pidlMyComputer; sei.lpVerb = "open"; sei.nShow = SW_SHOWNORMAL; sei.lpFile = NULL; sei.lpParameters = NULL; sei.lpDirectory = NULL; ShellExecuteEx( &sei ); pMalloc->Free( pidlMyComputer ); } pMalloc->Release(); } return 0; }//main CLSID パスを利用する方法
explorer.exe に CLSID パスを渡すことによって、特殊フォルダを開くことができます。 例: // Web フォルダを開く例です。 // 関数 ShellExecute() の第4引数が Web フォルダの CLSID パス // "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{BDEADF00-C265-11d0-BCED-00A0C90AB50F}" // です。 int main( void ) { ShellExecute ( HWND_DESKTOP, "open", "explorer.exe", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{BDEADF00-C265-11d0-BCED-00A0C90AB50F}", NULL, SW_SHOWNORMAL ); return 0; }//main
関連
・特殊フォルダ(システム、デスクトップなど)のパスを取得する |
| ||||||||||||||||||||||