2009-07-20 2 views
0

私は別のアプリケーションを起動し、com経由でそれと通信するC++コンソールアプリケーションを持っています。私はspawnedウィンドウのhWndを持っていて、COMアプリケーションがもはや開いていない場合、コンソールアプリケーションが自分自身を殺すことを望みます。これをどうやってやることができますか?hWndが存在しない場合に自己をキル

答えて

3

すでにアプリケーション間で通信しているので、ウィンドウは、コンソールアプリケーションへの上に「私は死んだ」というメッセージを送り、閉じているとき、あなたは、信号を設定する必要があります。あなたのコンソールアプリケーションはその後、適切に閉じることができます。

あなたはhWndををチェックして、これを行うにしたい場合は、単にのhWndがもはや有効であれば、あなたが知っているようになる「IsWindow()」関数を使用することができます。ポーリングコンストラクトを使用してこれを行う必要があります。他のアプリケーションであった場合

別のオプション、これより有用ではないあなたは、フックをインストールすると、ウィンドウが破壊されるのを見ることです。これを行うには、Windowsフックを見て、CBTフックが適切であれば、簡単に破壊されているウィンドウを見ることができます。

+1

申し訳ありませんが、これは起こるのを待っている競合状態です。 HWNDは単純な番号であり、再利用されます。それが世論調査の間に起これば、あなたは失う。 – MSalters

0

コールGetWindowThreadProcessId()、その後、OpenProcess()。これで、プロセスハンドルが通知されたかどうかをテストできるようになりました。

関連する問題