|
ごみ箱、タスクスケジューラなどの特殊フォルダを開く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
関連
・特殊フォルダ(システム、デスクトップなど)のパスを取得する |
| ||||||||||||||||||||||
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

同人ダウンロード販売|DL.Getchu.com