VB 实现软件watchdog的方法 小弟有个程序需要做个功能是的程序卡死(或被意外终止)时,能够自动重新启动程序。没有好的实现思路,在此请教各位前辈大神了。 需要一个比较完整的思路,关键代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 软件看门狗?这个没有涉猎过。先不说看门狗的事情你的软件卡死的意思是CPU占用率很高?那你首先的读到该程序CPU占用率才行。 如果是VB6,可以考虑用DDE,参考:http://support.microsoft.com/kb/189498/zh-cn还有常用的内存拷贝方法,参考:http://zhidao.baidu.com/question/287503176.html 你这到提醒我了,可否考虑使用COM端口来操作?计算机上有两个串口,比如:1、被监控程序占用COM1、监控程序占用COM22、将两个串口用物理线路连接起来(2-3、3-2)3、监控程序定时发送串口通信命令给被监控程序,根据返回时间来判断被监控程序的状态,如果没有返回,表示被监控程序不在了,那么重新启动。如果返回连续超时几次,那么终止掉该进程,再启动。 比如你的程序A.exe活着的标志是abc.log文件大小每隔比如5分钟肯定变化的话,写另一个程序B.exe,每隔5分钟检查abc.log文件大小发现不变的话:shell "TASKKILL /IM A.exe"shell "A.exe" 是啊 只是模拟这种功能,有点简单我的想法主程序有个timer修改一个外部ini文件中的一个值为0,检测程序定时检测这个值来判定主程序运行的状态是不是卡死或者已经被关闭了,如果是在重新打开主程序,不知道各位觉得这种想法是否合适,其实太难的我也不会 那何不?tasklist检查有没有进程,如果没有就taskkill然后在运行?这个程序可以实现Shell的功能,从而实现tasklist内容的获取 个人认为,既然是看门狗,那就的有硬件介入,一点臆想,仅供参阅:1、以并口作为看门狗的硬件2、自己做一个并口短接头,将其中的一些TTL输入和TTL输出短接(这个全由你自己定义,也只有你自己知道)3、被监控程序如果运行,那么就设置某几个输出(通过短接线路,转换为输入),且每次输出不一致,监控程序读取这个输入,看看是否变化。如果不变化,那么表明被监控者挂了。重新启动。如果有变化,那么表明被监控者或者。虽然我没有做过加密狗之类的硬件,但我想他的思想应该差不多。这个方法比简单的纯软件方法更可靠,毕竟要懂软件,又要懂硬件设计的人不多。 因为有时进程会假死(即tasklist中有但不实际干活) 高人帮忙解答 MSHFlexGrid1与 MSFlexGrid1控件有什么差别(高手不吝赐教) datagrid修改了列标题,怎么就不显示了 有些服务企业有能根据来电显示用户资料的CRM系统,需要些什么软硬件设备? vb导出到pdf 如何用vb调用FTKernel这个api(做bt下载程序的api) ◆◆◆一个问题,在线等答案!关于单选框的问题 vb能否实现多台计算机共用一台计算机上的数据库 vb窗体界面的实现,高手请进 在vb中怎么注册一个dll?? xinfang(小生)进来领分 vb程序与网页交互 急!!!!在vb中调用vs2005的exe文件
先不说看门狗的事情
你的软件卡死的意思是CPU占用率很高?那你首先的读到该程序CPU占用率才行。
http://support.microsoft.com/kb/189498/zh-cn还有常用的内存拷贝方法,参考:
http://zhidao.baidu.com/question/287503176.html
可否考虑使用COM端口来操作?计算机上有两个串口,比如:
1、被监控程序占用COM1、监控程序占用COM2
2、将两个串口用物理线路连接起来(2-3、3-2)
3、监控程序定时发送串口通信命令给被监控程序,根据返回时间来判断被监控程序的状态,如果没有返回,表示被监控程序不在了,那么重新启动。如果返回连续超时几次,那么终止掉该进程,再启动。
写另一个程序B.exe,每隔5分钟检查abc.log文件大小发现不变的话:
shell "TASKKILL /IM A.exe"
shell "A.exe"
主程序有个timer修改一个外部ini文件中的一个值为0,检测程序定时检测这个值来判定主程序运行的状态
是不是卡死或者已经被关闭了,如果是在重新打开主程序,不知道各位觉得这种想法是否合适,
其实太难的我也不会
然后在运行?
这个程序可以实现Shell的功能,从而实现tasklist内容的获取
1、以并口作为看门狗的硬件
2、自己做一个并口短接头,将其中的一些TTL输入和TTL输出短接(这个全由你自己定义,也只有你自己知道)
3、被监控程序如果运行,那么就设置某几个输出(通过短接线路,转换为输入),且每次输出不一致,监控程序读取这个输入,看看是否变化。如果不变化,那么表明被监控者挂了。重新启动。如果有变化,那么表明被监控者或者。虽然我没有做过加密狗之类的硬件,但我想他的思想应该差不多。
这个方法比简单的纯软件方法更可靠,毕竟要懂软件,又要懂硬件设计的人不多。