• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:createprocessで起動させる別.exeをモーダルで起動したい)

createprocessで別.exeをモーダルで起動する方法

このQ&Aのポイント
  • VC++6.0 MFCで開発している際に、createprocessを使用して別のexeファイルをモーダルで起動したい場合、どのようにすれば良いでしょうか?現在、A.exeの特定のボタンを押すとcreateprocessを使用してB.exeを起動させています。しかし、B.exeを起動後に画面をクリックした際にA.exeがアクティブになることを防ぎたいと考えています。現在の実装では、CreateProcess関数を使用してB.exeを起動しています。
  • 現在の状況では、B.exeの終了を待たずにA.exeがアクティブになってしまいますが、B.exeが終了するまでA.exeがアクティブにならないようにしたいです。現在のコードは、PROCESS_INFORMATIONとSTARTUPINFOを使用してCreateProcess関数を実行しています。
  • 実現不可能な場合もありますが、B.exeが終了するまでA.exeがアクティブにならないようにする方法について教えていただきたいです。お手数をお掛けしますが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

CreateProcessで作成したプロセスのプロセスIDを監視し、そのプロセスIDが有効である間、以下のページの例のように、WM_MOUSEACTIVATEに対してNO_ACTIVATEを返せば良い。 http://d.hatena.ne.jp/kent013/20080304/1204640570 但し、マウス以外の操作(例えばAlt+Tab)によるアクティブ化は上記の方法では防げないので、その場合は「WM_ACTIVATEでアクティブ化を要求されたら、今までアクティブだったウィンドゥを強制的にアクティブ化する」などの処理で、自分自身を非アクティブにすれば良い。