本文要实现的功能就是在windows下,实现用一个程序来打开,关闭和监视其它的exe程序,我这里的的exe程序是我自己实现的。
1.监视exe是否崩溃
首先如果一个进程不在了,它的进程ID就是0, 那么通过检测进程ID是否为0,就可以知道进程是否还在运行。
假设程序崩溃了,它的进程ID会变成0,那么通过检测进程ID是否为0,就可以知道程序是否崩溃。
但是在windows下,情况并不是假设的那样,程序崩溃了,它就弹出一个错误对话框,如下图所示,并且如果不关掉掉这个框,程序就永远死在这个窗口上,不会退出,进程ID也不会变成0,那么就不能通过检测进程ID来判断程序是否崩溃。所以现在必须让程序崩溃后直接退出而不是死在错误窗口上。
解决办法就是SetUnhandledExceptionFilter函数,使用这个函数就可以让程序崩溃后直接退出,而不是死在错误窗口上。这个函数的返回值有三种情况:
EXCEPTION_EXECUTE_HANDLER 表示下面执行__except块内及其后面的代码
EXCEPTION_CONTINUE_SEARCH 表示回到抛出异常处继续向下执行
EXCEPTION_CONTINUE_EXECUTION 表示查找下一个异常处理例程入口
SetUnhandledExceptionFilter函数用法示例: