c++ 线程软件看门狗_<b>软件看门狗:别让你的程序没有呼应</b>[VC/C++编程]

赞助商链接

本文“软件看门狗:别让你的程序没有呼应[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中改正窗口吻概,以下:

以上是“软件看门狗:别让你的程序没有呼应[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值