プロセスのウィンドウハンドル

//typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
static BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lparam )
{
// プロセスID
DWORD processId1 = (DWORD)lparam;

DWORD processId2;
::GetWindowThreadProcessId( hwnd, &processId2 );

if( processId2 == processId1 ){
::SetWindowPos( hwnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE );
return FALSE;// 終了
// 指定したプロセスのウィンドウが複数あり、全てのウィンドウに処理をする場合はTRUEを返すこと。

}

return TRUE;// 列挙を続ける
}

// プロセスを起動
void createProcess()
{
PROCESS_INFORMATION pi;

STARTUPINFO si;
::ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

if( !::CreateProcess( value, argv, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi ) ) return;

// 待機
::WaitForInputIdle( pi.hProcess, 10000 );

// ウィンドウを列挙
::EnumWindows( EnumWindowsProc, pi.dwProcessId );
}
最終更新:2009年10月09日 16:08
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。