2011-08-03 18 views
0

私の問題のコンテキストは次のとおりです。コンソールクローズイベントを捕まえる方法は?

  1. 私はメインプロセスとして実行するWindows .NETアプリケーション(GUI)を持っています。
  2. この(親)プロセスから、コンソールプロセスとして2つのサブプロセスを作成します。
  3. メインプロセスは、名前付きパイプを通じて子プロセスにデータを送信します。
  4. メインアプリケーションでは、私はサブプロセスのリストを持っています。

私の問題は、各コンソールにはクローズ( "x")ボタンがあり、終了することができるということです。主なアプリに作成されたコンソールのリストを保存しているので、コンソールがいつ終了するか知りたいと思います。

私のコンソール(子プロセス)プログラムは、パイプを読み込んで(そしてデータを表示する)ループ機能を持つ単なる "main()"です。それは、メッセージシステムを持たないか、またはウィンドウイングの「終了」を処理できるものは何もありません。

私の頭に浮かぶ最初のアイデアは、メインアプリケーションからサブプロセスをポーリングしてリストを更新することです。しかし、これは、コンソールを監視するタイマーやスレッドを導入する必要があることを意味します。私はその考えが気に入らない。

誰かが良いアイデアはありますか?

答えて

0

WaitForSingleObject(hThread, 0)は、hThread引数で指定されたスレッドが通知され、したがって終了したかどうかを知らせます。同じはhProcessになります。

CreateProcess()コールの後に、両方の子プロセスのハンドルが返されます。すぐに閉じるか、WaitForSingleObjectを使用して監視することができます。

関連する問題