检测在另一个应用程序中打开的消息框

时间:2010-06-02 15:32:23

标签: vb.net process

我正在VB.NET中开发一个Windows服务,它启动了一个执行一些工作的遗留应用程序。该服务充当遗留应用程序的包装器,允许用户自动执行其他手动操作。

一切都运行良好,除了偶尔遗留应用程序显示消息框。执行此操作时,该过程将暂停,直到消息框关闭。

由于服务将在服务器上运行,因此没有用户可以关闭消息框。

该服务在System.Diagnostics.Process

中启动旧应用程序

有没有办法检测到我已经开始使用System.Diagnostics.Process的进程显示了一个消息框?有没有办法通过代码关闭消息框?

2 个答案:

答案 0 :(得分:2)

我还发现EnumChildWindows没有返回MessageBox。但我找到了一个网站,向我展示了如何做到这一点。 http://vbcity.com/forums/t/105842.aspx 你想调用GetWindow传入GW_ENABLEDPOPUP。它就像一个魅力。感谢Scott Waletzko!

答案 1 :(得分:1)

使用FindWindow查找应用程序,使用EnumChildWindows枚举所有子窗口,直到找到消息框(如果消息框不是应用程序主窗口的直接子窗口)我认为必须有递归调用。

您可以跳过FindWindow来电,而是使用MainWindowHandle的{​​{1}}属性,但我还没有检查是否有效。

查看所有这些内容的好工具是Spy ++,它可以帮助您查看有关正在运行的流程的一些信息。