精易论坛

标题: 检测进程/线程是否被挂起/暂停 [打印本页]

作者: 泆寒    时间: 2016-5-6 01:56
标题: 检测进程/线程是否被挂起/暂停
本帖最后由 泆寒 于 2016-5-6 01:58 编辑

初来贵地.手下留情.

版面上看了个精华,感觉处理的方式欠妥。故此分享一下。

IsHungAppWindow

SendMessageTimeout

上面两函数就不多介绍了,字面上就看明白了.

两者都是基于窗口句柄的.要检测是否挂起/暂停.最好的方式是通过窗口所在线程的状态值去判断.而不是通过等待窗口响应去判断这个进程/线程是否被挂起.

代码通过NtQuerySystemInformation的5号功能SystemProcessesAndThreadsInformation获取其线程的状态值.
  
子程序名返回值类型公开备 注
检测进程主线程是否被挂起逻辑型 
参数名类 型参考可空数组备 注
进程ID整数型
返回 (检测过程 (进程ID))
子程序名返回值类型公开备 注
检测窗口线程是否被挂起逻辑型 
参数名类 型参考可空数组备 注
窗口句柄整数型
变量名类 型静态数组备 注
pid整数型 
tid整数型 
tid = GetWindowThreadProcessId (窗口句柄, pid)
返回 (检测过程 (pid, tid))
子程序名返回值类型公开备 注
检测过程逻辑型 
参数名类 型参考可空数组备 注
pid整数型
tid整数型
变量名类 型静态数组备 注
buf字节集 
len整数型 
ret整数型 
lpbuf整数型 
offset整数型 
count整数型 
i整数型 
NtQuerySystemInformation (5, buf, 0, len)  ' //SystemProcessesAndThreadsInformation
buf = 取空白字节集 (len)
ret = NtQuerySystemInformation (5, buf, len, 0)
如果真 (ret = 0)
lpbuf = 取指针_字节集型 (buf)
offset = 指针到整数 (lpbuf)
判断循环首 (offset ≠ 0)
如果真 (指针到整数 (lpbuf + 68) = pid)  ' //pid
count = 指针到整数 (lpbuf + 4)  ' //count of thread
lpbuf = lpbuf + 184  ' //SYSTEM_THREADS offset
计次循环首 (count, i)
如果真 (i = 1)
如果真 (是否为空 (tid))  ' //只检测主线程,检测全部的话就是进程是否被挂起了.
返回 (指针到整数 (lpbuf + 56) = 5)  ' //KWAIT_REASON

如果真 (指针到整数 (lpbuf + 36) = tid)
返回 (指针到整数 (lpbuf + 56) = 5)
lpbuf = lpbuf + 64  ' //size of SYSTEM_THREADS struct
计次循环尾 ()
跳出循环 ()
offset = 指针到整数 (lpbuf)  ' //NextEntryDelta
lpbuf = lpbuf + offset
判断循环尾 ()
返回 ()
子程序名返回值类型公开备 注
取指针_字节集型整数型 
参数名类 型参考可空数组备 注
字节集字节集
置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 15, 132, 3, 0, 0, 0, 131, 192, 8, 201, 194, 4, 0 })
返回 (0)
子程序名返回值类型公开备 注
指针到整数整数型 
参数名类 型参考可空数组备 注
指针整数型
置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 })
返回 (0)


作者: 正鑫软件开发    时间: 2016-5-6 01:59
本帖最后由 孤灯独饮 于 2016-5-6 02:04 编辑

.`.`支持新人发帖!
作者: E丶JavaScript    时间: 2016-5-6 02:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 兔子君    时间: 2016-5-6 02:02
孤灯独饮 发表于 2016-5-6 01:59
.`.`精益模块有···············

你这打脸打得


































毫无技术含量
作者: 正鑫软件开发    时间: 2016-5-6 02:05
JadeジYu 发表于 2016-5-6 02:02
你这打脸打得

哥  我错了  我改! 我已经改了!别打脸行不?
作者: 泆寒    时间: 2016-5-6 02:10
本帖最后由 泆寒 于 2016-5-6 02:19 编辑
孤灯独饮 发表于 2016-5-6 02:05
哥  我错了  我改! 我已经改了!别打脸行不?

线程_取状态()
是这个吗?原谅我没用过精易模块.刚看了下进程/线程好像没查询是否被挂起的相关的代码.
精液好像封装的大部分是文档化的API.
这个状态和结构里的状态可不一样啊.
不要自己打自己脸啊.....

{:soso__3669389859068460655_4:}


作者: 山寨夫人    时间: 2016-5-6 18:29
zhichizhichi
作者: Shanks    时间: 2016-5-6 18:57
错误(37): 找不到指定的命令/子程序/Dll命令调用名称“NtQuerySystemInformation”。
作者: LySyhd    时间: 2016-5-8 18:11
过来支持下
作者: youwoyy    时间: 2016-5-9 15:09
支持楼主
作者: 流氓丶R    时间: 2016-5-9 19:30
泆寒 发表于 2016-5-6 02:10
线程_取状态()
是这个吗?原谅我没用过精易模块.刚看了下进程/线程好像没查询是否被挂起的相关的代码.
...

想打泆寒大大的脸哪有这么简单啊
作者: kaodashi187    时间: 2016-5-13 07:43
来看看   谢谢分享
作者: 8781440    时间: 2016-5-18 11:06
都是好东西啊!!谢谢了
作者: 小堆    时间: 2016-5-20 16:14
精易因你更精彩
作者: 周正    时间: 2016-5-20 16:42
奇技淫巧
作者: kunsir    时间: 2016-5-22 20:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: kunsir    时间: 2016-5-22 20:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: kunsir    时间: 2016-5-23 08:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 倾城之恋    时间: 2016-6-20 17:22
学习学习学习
作者: 52gta    时间: 2016-7-11 17:07
不懂路过
作者: qmdqaq    时间: 2016-9-5 18:47
都是好东西啊!!谢谢了

作者: qq516290517    时间: 2016-9-6 09:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: Ai鹿    时间: 2016-9-12 19:02
好东西!谢谢了

作者: a1678131758    时间: 2016-9-20 20:26
能恢复吗            
作者: phinex    时间: 2016-11-8 12:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: a1490004095    时间: 2016-12-18 16:50
调用了精易模块,其中WinHttp部分源码来自易语言论坛被封七号
调用Ex_UI支持库

作者: 1353637454    时间: 2016-12-22 19:46
感谢发布原创作品,感谢感谢
作者: 1150356620    时间: 2017-1-3 11:11
路过 支持一下
作者: 编程高手我不是    时间: 2017-2-1 14:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: UserXCh    时间: 2017-2-3 09:37
做游戏保护的实例?
作者: Masterヽ    时间: 2017-2-9 18:48
感谢分享!~~!
作者: sd3970566    时间: 2017-2-15 12:30
如果线程被强制结束了呢
作者: InstallTest    时间: 2017-2-18 08:43
故此分享一下
作者: welfare1234    时间: 2017-2-18 22:10
感谢楼主分享
作者: lixiaoluo15    时间: 2017-4-23 22:34
错误(37): 找不到指定的命令/子程序/Dll命令调用名称“GetWindowThreadProcessId”。 应该怎么处理我百度了半天!没处理完成。。。所以才来打扰下你
作者: lixiaoluo15    时间: 2017-4-24 00:11
研究了半天硬是没有研究透!也没有实现 小白的悲哀!楼主能直接给个案例吗?
作者: 自然卷。    时间: 2017-4-30 01:20
可以检测自身吗?
作者: 蛙牛    时间: 2017-5-5 11:52
这个支持以下 也许能用到
作者: lm88818    时间: 2023-9-1 15:54
支持开源~!感谢分享
作者: because2001    时间: 2023-9-17 12:34
buf类型错误,这个函数第二个参数是整数型啊
作者: lm88818    时间: 2023-11-7 14:25
支持开源~!感谢分享!
作者: yuzhong    时间: 2024-10-25 11:46
1111111111111111111111111111111111111
作者: qw1212ss    时间: 2025-1-5 22:29
2025.1.5测试不行, 无论挂起还是启动状态,都返回假
作者: likai123    时间: 2025-1-11 18:53
正好需要
作者: XJxaiojing    时间: 2025-1-12 01:20
666666666666666
作者: lxn2wyf    时间: 2025-1-12 02:15
哦哟,这方法挺新鲜呢,我之前没用过,感觉挺有料的,多谢分享啊!
作者: Destin    时间: 2025-6-10 07:31
555555555555555555
作者: yuzhong3    时间: 2025-7-1 06:41
5555555555555555555555555555555555555555555




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4