<b>软件看门狗:别让你的程序没有呼应</b>[VC/C++编程]
本文“<b>软件看门狗:别让你的程序没有呼应</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
一.概述
一些重要的程序,必须让它一向跑着;并且还要不时关心它的状况——不能让它呈现死锁现象.当然,假如一个主程序会呈现死锁,必定是计划大概编程上的失误.我们主要做的事是,把这个Bug揪出来.但假如时间紧急,这个Bug又“飘忽不定”,那么,我们还是先写一个软件“看门狗”,暂时应一下急吧.
“看门狗”的需求描写:“看门狗”的运行不呈现界面窗口,具有一定的躲藏性;按时判断目标进程能否运行在当前系统中,假如没有则启动目标进程;判断目标进程能否“没有呼应”,假如是则终止目标进程;假如目标进程“没有呼应”的次数超越一定的数目,则将计算机系统重启.
二.预备知识
首先要介绍两个主要的函数,可以判断目标进程能否“没有呼应”.在User32.dll中(没有文档公开),Win2k/NT下的IsHungAppWindow和Win9X下的IsHungThread;前者是以一个窗口句柄作为参数,后者是以线程ID作为参数.我们可以通过VC开辟工具的Depends查到这两个函数.
要利用这两个函数,我们必须先动态导入,以下:
if (m_hUser32 == NULL)
{
m_hUser32 = GetModuleHandle("USER32.DLL");
}
if (m_hUser32)
{
m_IsHungNT = (HUNG_FUNNT) GetProcAddress(m_hUser32, "IsHungAppWindow");
m_IsHung9X = (HUNG_FUN9X) GetProcAddress(m_hUser32, "IsHungThread");
}
别的,还有以下知识点:
1. 若何让窗口躲藏(当然通过Windows任务管理器还是可以看到的)
在框架窗口类的PreCreateWindow中改正窗口吻概,以下:
以上是“<b>软件看门狗:别让你的程序没有呼应</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |