我需要开发一个“Watchdog”程序来检测程序何时崩溃,杀死进程然后重新启动它。不幸的是,这个程序的原始开发人员不再在这里,并且他的计算机不再能够在不购买另一个昂贵的许可证的情况下编译它。有问题的程序崩溃了VB错误代码(“运行时错误5 ...等等。)我需要检测程序何时进入此状态。或者,如果可能的话,我需要能够看到第一个程序的错误处理程序,所以我可以检查它是否存在“可捕获”错误,或者至少能够检查相关程序的当前状态。
答案 0 :(得分:0)
程序彼此隔离。 CPU使得每个程序都认为它是唯一运行的程序,并且在32位中,它有4 GB的内存全部都是自己的。因此,程序不能影响或监控另一个程序。
因此,调试是上述情况的一个例外,因为如果没有它,计算机将无法使用,并且内置在CPU / OS中。
因此,在调试器下运行VB6程序,大多数商用计算机都安装了NTSD。请注意,这不是基本调试器,而是机器代码调试器。
如果它是一个窗口,那么只需等待窗口标题。您可以使用FindWindow等API调用来监控窗口标题。
HWND FindWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName
);