iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 使用 win32gui+win32api 通过鼠标获取句柄
  • 547
分享到

Python 使用 win32gui+win32api 通过鼠标获取句柄

python自动化windows 2023-09-08 19:09:53 547人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python 使用 win32gui+win32api 通过鼠标获取句柄 一. 相关背景 通过Python实现某些win相关的自动化操作时,可能需要通过句柄操作. 获取的方法有很多.对此也有相关的可视

python 使用 win32gui+win32api 通过鼠标获取句柄

一. 相关背景

通过Python实现某些win相关的自动化操作时,可能需要通过句柄操作.
获取的方法有很多.对此也有相关的可视化的软件实现类似的功能.比如:

  1. 通过vs工具获取窗体或者程序句柄
  2. 使用按键精灵获取句柄
  3. 使用某星小助手等

为此分享的当前的文章介绍的方法也是一种可视化的获取句柄的方法,感兴趣的或有需要的,可以一试.

二. 完整示例

Py文件 通过鼠标获取句柄.py

import timeimport win32guiimport win32api# 记录最后的句柄last_hwnd = ''# 循环获取句柄while (True):# 获取鼠标坐标    point = win32api.GetCursorPos()    # 根据鼠标坐标获取句柄    hwnd = win32gui.WindowFromPoint(point)# 判断是否已打印输出到屏幕    if last_hwnd != hwnd:    # 如果未打印,记录当前句柄,并获取 ClassName 和 WindowText        cn = win32gui.GetClassName(hwnd)        text = win32gui.GetWindowText(hwnd)        # 打印 句柄信息        print('句柄:', hwnd, '类名:', cn, '窗口标题:', text)        # 并记录最后一个句柄,避免 鼠标停留在同一个句柄下时 循环输出相同的句柄信息        last_hwnd = hwnd    # 循环睡眠200ms,降低循环速度,避免循环过快 浪费系统资源(cpu等),200毫秒的延时体验基本兼顾.    time.sleep(0.2)

三. 使用步骤和说明

(默认 具有python运行环境 版本推荐: python3.10.8)

  1. 创建 通过鼠标获取句柄.py 文件
  2. 运行 通过鼠标获取句柄.py
  3. 移动鼠标 至 想要获取 句柄的位置,此时程序输出信息中将会打印相关句柄信息

四. 知识点描述归纳

1. 获取鼠标坐标

# 获取鼠标坐标point = win32api.GetCursorPos()

2.根据鼠标坐标获取句柄

# 根据鼠标坐标获取句柄hwnd = win32gui.WindowFromPoint(point)

3.根据句柄获取 ClassName

# 获取 ClassNamecn = win32gui.GetClassName(hwnd)

4.根据句柄获取 WindowText

# 获取 WindowTexttext = win32gui.GetWindowText(hwnd)

五. 更多资料信息

关于句柄?

句柄(Handle)是一个用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量 .

句柄在 windows编程中是一个很重要的概念,在 Windows程序中并不是用物理地址来标识一个内存块、文件、任务或动态装入模块的。相反地,Windows API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

句柄是一个标识符,是用来标识对象或者项目的。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,以引用相应的对象。在 Windows编程中会用到大量的句柄 。

在计算机科学中,句柄(Handle)是一种引用或标识对象的方式,它可以用来访问或操作底层系统资源。

不同的操作系统可能会有不同的实现和用途。

相关引用文章:

  1. 句柄(Handle)- 百度百科
  2. 什么是句柄,句柄有什么作用
  3. 句柄是什么?一文带你了解!

常见的句柄有哪些?

常见的有窗口句柄(hwnd),设备描述表句柄(hdc),内存句柄(hmem),文件句柄,进程句柄,线程句柄,笔的类型句柄(hpen),字体句柄(hfont),区域句柄(hrgn) 等

通过句柄可以做哪些事情?

以下 4点 是来自一个 2011年(12年前的) 的 前辈们 讨论的帖子的内容 [可点击访问])
1:获取该窗口的子窗口信息,比如登录框上的字符信息 GetWindowText
2:向该窗口发送消息,以便完成类似输入字符,控制游戏窗口人物走动之类的事情。 SentInput mouseevent keyboardevent SendMessage…
3:更改该窗口的外观,比如换个标题栏图标,隐藏边框,即只显示客户区(类似播放器精简模式) LoadIcon SetIcon SetWindowLong SetClassLong…
4:让该窗口内嵌在自己程序的某个窗口里显示 SetParent

更多可参考:

  1. win32API中文参考手册:http://www.yfvb.com/help/win32sdk
  2. windows下的句柄利用

说明

更多相关知识,有机会日后再更新补充,欢迎点赞收藏.
如有问题欢迎评论讨论分享.


路漫漫其修远兮,吾将上下而求索

来源地址:https://blog.csdn.net/LelerTop/article/details/131327297

--结束END--

本文标题: Python 使用 win32gui+win32api 通过鼠标获取句柄

本文链接: https://www.lsjlt.com/news/400483.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作