Net中的ActiveX控件检测应用程序是否挂起

时间:2020-03-05 18:52:25  来源:igfitidea点击:

我正在努力升级屏幕抓取应用程序。我们正在使用ActiveX控件将屏幕刮出IBM大型机。大型机程序经常挂起并导致ActiveX控件崩溃,从而导致我们的应用程序崩溃。我们无权访问大型机或者ActiveX源代码。我们不会编写自己的活动x控件。

封装ActiveX控件以检测应用程序是否挂起的最有效方法是什么,以便我们可以杀死该进程并重新启动代码?

我应该创建两个单独的应用程序吗?一个作为控制器检查另一个,并在挂起时终止/重新启动该进程?

他们必须在单独的应用程序域中吗?即使两个程序位于单独的应用程序域中,它们是否也可能彼此通信?

解决方案

回答

我们可以使用System.Diagnostics.Process.Start()启动可执行文件。这将返回一个带有Responding属性的Process对象,可用于定期检查该进程是否仍处于活动状态。

但是,我们将需要两个单独的应用程序来执行此操作。而且我们正在监视的应用程序需要有一个主窗口,因为监视通过检查应用程序是否仍在处理来自主窗口消息队列的消息来进行。这与Windows知道向窗口标题添加"不响应"的方式相同