【发布时间】:2010-11-12 09:24:22
【问题描述】:
我有一个 c++ 控制台应用程序,它启动另一个应用程序并通过 com.我有生成的窗口的 hWnd,如果 COM 应用程序不再打开,我希望控制台应用程序自行终止。我该怎么做呢?
【问题讨论】:
我有一个 c++ 控制台应用程序,它启动另一个应用程序并通过 com.我有生成的窗口的 hWnd,如果 COM 应用程序不再打开,我希望控制台应用程序自行终止。我该怎么做呢?
【问题讨论】:
由于您已经在应用程序之间进行通信,因此您应该设置一个信号,当窗口关闭时,它会向控制台应用程序发送一条“我死了”消息。然后您的控制台应用程序可以适当地关闭。
如果你想通过检查 hWnd 来做到这一点,你可以简单地使用 'IsWindow()' 函数,它会让你知道 hWnd 是否不再有效。您必须通过轮询构造来执行此操作。
另一个选项,如果另一个应用程序不是你的,这个更有用的是安装一个钩子并观察窗口被破坏。如果您想这样做,请查看 windows 挂钩,CBT 挂钩是合适的,您可以轻松观察 windows 被破坏。
【讨论】:
调用 GetWindowThreadProcessId(),然后调用 OpenProcess()。您现在可以测试进程句柄是否已发出信号,或 Wait() 以使其发生。
【讨论】: