pywin32实践 判断程序窗口是否失去响应
发布日期:2022-03-03 10:44:13 浏览次数:6 分类:技术文章

本文共 1447 字,大约阅读时间需要 4 分钟。

图片来自网络

有时候windows程序会出现”卡死”的情况,在任务管理器中一目了然。那么问题来了,万一程序在后台或者远程运行,要如何知道程序是否未响应呢?这里分享一个利用pywin32的实现方法。

获取windows窗口对应的进程ID

hWndList = []# 获取窗口句柄win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)# 迭代for hWnd in hWndList:    # 获取窗口句柄对应的线程ID和进程ID    threadId, process_id = win32process.GetWindowThreadProcessId(hWnd)    print(threadId, process_id)

获取进程名和进程ID

# instance表示进程实例(可重名)junk, instances = win32pdh.EnumObjectItems(None, None,'process', win32pdh.PERF_DETAIL_WIZARD)proc_ids=[]proc_dict={}for instance in instances:    if instance in proc_dict:        proc_dict[instance] = proc_dict[instance] + 1    else:        proc_dict[instance]=0for instance, max_instances in proc_dict.items():    for inum in range(max_instances+1):        hq = win32pdh.OpenQuery()        path = win32pdh.MakeCounterPath( (None,'process',instance, None, inum,'ID Process') )        counter_handle=win32pdh.AddCounter(hq, path)         win32pdh.CollectQueryData(hq)        type, val = win32pdh.GetFormattedCounterValue(counter_handle, win32pdh.PDH_FMT_LONG)        proc_ids.append((instance,str(val)))        win32pdh.CloseQuery(hq) proc_ids.sort()

判断窗口是否未响应

# 迭代进程IDfor i in range(0, len(sys_ids)):    # 匹配进程ID和进程名    if(sys_ids[i] == process_id and process_name == proc_names[i]):        # 判断窗口状态        status = checkStatus(hWnd)        status_list.append(status)status_code = -1if(len(status_list)>=1):    status_code = set(status_list).pop()

部分代码来自网络,欢迎讨论。

转载地址:https://blog.csdn.net/yangjiegang8/article/details/78169466 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mybatis sqlmapper test 判断非字符串类型的值
下一篇:Windows环境下批量执行Oracle的SQL的一种方法

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月09日 17时37分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

华为博士招聘上机考试题目_牛客网-华为-2020届校园招聘上机考试-3 2019-04-21
python中for可以做变量名吗_Python中使用动态变量名的方法 2019-04-21
mysql 日期转换天数_MySQL 日期操作 增减天数、时间转换、时间戳 2019-04-21
java对象去重复_JAVA中List对象去除重复值的方法 2019-04-21
java bss_[转] .bss段和.data段的区别 2019-04-21
java上传图片损坏_大神求助 上传图片后 图片损坏 2019-04-21
java socket唯一标识符_Java Socket编程之常识网络基础知识 2019-04-21
java给xyz大小排序_java递归实现string xyz排序 2019-04-21
arctime必须要java_Arctime使用教程 Arctime常见问题解答 2019-04-21
mysql pxc mysql5.7_mysql之PXC5.7.18集群系列——1. Percona XtraDB Cluster 搭建 2019-04-21
mysql 自适应字段宽度_box-sizing解决自适应布局容器宽度问题 2019-04-21
java 配置文件配置路径_Java读取配置文件路径设置 2019-04-21
vux 选择器_vue中的scoped分析以及在element-UI和vux中的应用 2019-04-21
java cache 有效期_springboot cache 自定义过期时间及自定义缓存key前缀 2019-04-21
java实验一目的_Java实验报告(实验一) 2019-04-21
java+native+字段_+Java中的native关键字浅析(Java+Native+Interface)++ 2019-04-21
php 内存泄露检测工具,php - 诊断内存泄漏 - 允许#bytes的内存大小耗尽 2019-04-21
Java 去除空格获取文件路径 2019-04-21
python 批量修改文件名称去除文件名中空格 2019-04-21
python 将文件名写入 txt文件 2019-04-21