メインウィンドウより後ろに持ってきたいのですが、やり方が分かりません。
Windowsで表示順を変更する方法をご存じの方がいらっしゃいましたら
教えていただけるとありがたいです。
// test.exe
// メモ帳のウィンドウハンドル
HWND hNotepad;
// ウィンドウハンドルを取得しする
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
// CreateProcess()で取得したPROCESS_INFORMATION構造体のポインタを取得
PROCESS_INFORMATION* pi = (PROCESS_INFORMATION*)lParam;
// ウインドウを作成したプロセスIDを取得。
DWORD lpdwProcessId = 0;
::GetWindowThreadProcessId(hWnd, &lpdwProcessId);
// CreateProcessで起動したアプリのプロセスIDとメインウィンドウを
// 作成したプロセスIDが同じ場合、起動したアプリを終了させる。
if(pi->dwProcessId == lpdwProcessId)
{
hNotepad = hWnd;
return FALSE;
}
return TRUE;
}
// ウィンドウのメモ帳を起動する
int CallNotepad()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory((LPVOID)&si,sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
char buf[32];
sprintf(buf, "notepad.exe");
if(!CreateProcess(NULL, buf,NULL,NULL,FALSE,
CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi) ){
return 1;
}
// メモ帳が起動するのを待つ
WaitForInputIdle(pi.hProcess, 10000 );
// コールバック関数の呼び出し。
if( EnumWindows(EnumWindowsProc, (LPARAM)&pi) )
return 1;
// "notepad.exe"がメインウィンドウより前に表示されてしまう。
return 0;
}