Убей себя, если hWnd не существует - PullRequest
0 голосов
/ 20 июля 2009

У меня есть консольное приложение c ++, которое запускает другое приложение и связывается с ним через com. У меня есть порожденное окно hWnd, и я хочу, чтобы консольное приложение убивало себя, если приложение COM больше не открыто. Как я мог сделать это?

Ответы [ 2 ]

3 голосов
/ 20 июля 2009

Поскольку вы уже обмениваетесь данными между приложениями, вы должны настроить сигнал, когда после закрытия окна оно отправляет сообщение «Я мертв» в консольное приложение. Ваше консольное приложение может затем закрыться соответствующим образом.

Если вы хотите сделать это путем проверки hWnd, вы можете просто использовать функцию IsWindow (), которая сообщит вам, если hWnd больше не действителен. Вы должны сделать это с помощью конструкции опроса.

Еще один вариант, еще один полезный, если другое приложение не принадлежит вам, - это установить хук и следить за разрушением окна. Если вы хотите сделать это, взгляните на хуки окон, уместно было бы использовать хаб CBT, вы можете легко следить за разрушением окон.

0 голосов
/ 21 июля 2009

Вызовите GetWindowThreadProcessId (), а затем OpenProcess (). Теперь вы можете проверить, сигнализирует ли дескриптор процесса, или Wait (), чтобы это произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...