递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2690|回复: 3
打印 上一主题 下一主题

[视窗] 检测自身是否无响应

[复制链接]

109

主题

460

帖子

2467

积分

金牌会员

Rank: 6Rank: 6

积分
2467
跳转到指定楼层
楼主
发表于 2023-12-27 23:31:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
<火山程序 类型 = "通常" 版本 = 1 />

方法 检测自身是否无响应 <类型 = 逻辑型 注释 = "检测自身程序是否无响应" 返回值注释 = "返回假  有响应  返回真  无响应" @禁止流程检查 = 真>
{
    @ int id = GetCurrentProcessId();
    @ HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,NULL,id);
    @ ::CloseHandle(hProcess);
    @ FILETIME createTime, exitTime, kernelTime, userTime;
    @ if (GetProcessTimes(hProcess, &createTime, &exitTime, &kernelTime, &userTime) == 0)
    @ {
    @ return false;
    @ }
    @ ULARGE_INTEGER processTime;
    @ processTime.LowPart = userTime.dwLowDateTime;
    @ processTime.HighPart = userTime.dwHighDateTime;
    @ ULARGE_INTEGER currentTime;
    @ GetSystemTimeAsFileTime(reinterpret_cast<LPFILETIME>(&currentTime));
    @ ULONGLONG elapsedTime = currentTime.QuadPart - processTime.QuadPart;
    @ elapsedTime /= 10000;
    @ if (elapsedTime >= 3000)
    @ {
    @ return true;
    @ }
    @ return false;

}




回复

使用道具 举报

65

主题

469

帖子

5157

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5157
QQ
沙发
发表于 2023-12-27 23:41:32 | 只看该作者
?程序都无响应了,怎么调用api检测?
回复

使用道具 举报

23

主题

146

帖子

1867

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1867
板凳
发表于 2023-12-28 00:45:28 | 只看该作者
xrea 发表于 2023-12-27 23:41
?程序都无响应了,怎么调用api检测?

创建线程
回复

使用道具 举报

346

主题

1600

帖子

6535

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6535
QQ
地板
发表于 2023-12-28 10:56:31 | 只看该作者
<火山程序 类型 = "通常" 版本 = 1 />

方法 检测自身是否无响应 <类型 = 逻辑型 注释 = "检测自身程序是否无响应" 返回值注释 = "返回假  有响应  返回真  无响应" @禁止流程检查 = 真>
{
    @ int id = GetCurrentProcessId();
    @ HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,NULL,id);
//   @ ::CloseHandle(hProcess);
    @ FILETIME createTime, exitTime, kernelTime, userTime;
    @ if (GetProcessTimes(hProcess, &createTime, &exitTime, &kernelTime, &userTime) == 0)
    @ {
    @ return false;
    @ }
    @ ::CloseHandle(hProcess);

    @ ULARGE_INTEGER processTime;
    @ processTime.LowPart = userTime.dwLowDateTime;
    @ processTime.HighPart = userTime.dwHighDateTime;
    @ ULARGE_INTEGER currentTime;
    @ GetSystemTimeAsFileTime(reinterpret_cast<LPFILETIME>(&currentTime));
    @ ULONGLONG elapsedTime = currentTime.QuadPart - processTime.QuadPart;
    @ elapsedTime /= 10000;
    //@ if
    //@ {
    @ return (elapsedTime >= 3000);
    //@ }
    //@ return false;

}

专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 00:03 , Processed in 0.106801 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表