|
2009/12/17(Thu) 15:34:38 編集(投稿者)
最終的な確認はこれからですが、うまくいきそうです。
まず、WaitForSingleObjectはどうしても共通化されている部分で他のアプリにも影響が出るので 使用するしかなく、タイマーも他のロジックで使用しているのでうかつに追加や起動間隔を変更できず WaitForSingleObjectを含めた子画面EXEコールルーチン&待機処理を別スレッドにしました。 その上でメインスレッドではここがイマイチ自信がないのですが、
EnableWindow(FALSE);
while(1) { Sleep(3000);
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { GetMessage(&msg, NULL, 0, 0); }else{ WaitMessage(); }
if(WaitForSingleObject(別スレッド, 0) != WAIT_TIMEOUT){ break; } }
EnableWindow(TRUE);
のようにして子画面起動中はメッセージをコントロール?して親画面へのアクションを抑制できたように 今のところ動いてはいます。(危険なロジックでしたらご指摘いただければ幸いです) テストプログラムで色々試して少しだけ動きがわかったような気がします・・・ また、念のためレジストリに HungAppTimeoutをXPの標準と同じ5秒で追加しています。→この後削除した場合の動きをさらに確認するつもりです。
|