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

这篇具有很好参考价值的文章主要介绍了Python 使用 win32gui+win32api 通过鼠标获取句柄。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一. 相关背景

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

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

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

二. 完整示例

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

import time
import win32gui
import 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

# 获取 ClassName
cn = win32gui.GetClassName(hwnd)

4.根据句柄获取 WindowText

# 获取 WindowText
text = 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://www.toymoban.com/news/detail-622779.html

到了这里,关于Python 使用 win32gui+win32api 通过鼠标获取句柄的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python基于win32实现梦幻西游手游后台鼠标键盘

    获取窗口句柄         可以使用按键精灵的按键抓抓         

    2024年02月11日
    浏览(48)
  • Python 自动化指南(繁琐工作自动化)第二版:二十、使用 GUI 自动化控制键盘和鼠标

    原文:https://automatetheboringstuff.com/2e/chapter20/ 了解用于编辑电子表格、下载文件和启动程序的各种 Python 模块是很有用的,但有时您需要使用的应用没有任何模块。在计算机上实现任务自动化的终极工具是你编写的直接控制键盘和鼠标的程序。这些程序可以通过发送虚拟击键和

    2024年02月09日
    浏览(52)
  • python 自动化学习(三) 句柄获取、模拟按键、opencv安装

         句柄是在操作系统中的一种标识符,相当于我们每个人的身份证一样,句柄在电脑中也是有唯一性的,我们启动的每一个程序都有自己的句柄号,表示自己的身份     为什么要说句柄,我们如果想做自动化操作时,肯定也不想程序占用了我们整个电脑,稍微操作一下

    2024年02月03日
    浏览(38)
  • 淘宝商品API使用示例:如何通过调用外部API来获取淘宝商品价格销量主图详情数据

    淘宝上的商品信息量非常之大,商品的详情信息也很齐全。如何通过调用外部API来实现批量获取商品价格销量主图详情等信息呢?上周刚好完成了一个完整的淘宝商品采集项目,今天特来分享一下。 接口名称:item_get 请求地址:https://api-test.cn/taobao/item_get result_type:[json,jso

    2024年02月10日
    浏览(45)
  • Python使用Matplotlib通过鼠标交互实现缩放、移动以及线上点坐标显示功能

    参考文章: 缩放:python 桌面软件开发-matplotlib画图鼠标缩放拖动_matplotlib缩放-CSDN博客 获取点坐标参考的文章忘了,侵权即删

    2024年04月13日
    浏览(39)
  • STM32使用ESP8266模块AT指令连接心知天气API获取天气信息

    由于之前使用STM32单片机来开发一些物联网的小项目,接触到了WIFI模块ESP8266,所以写下来记录一下。 本文主要介绍的是STM32通过发送AT指令集来控制ESP8266 WIFI模块连接WiFi并与心知天气API建立TCP连接获取天气信息。 ESP8266我使用的是正点原子的ATK-ESP8266,已经提前烧录好AT指令集

    2023年04月08日
    浏览(66)
  • python中使用websocket调用、获取、保存大模型API

    笔者最近在测试星火大模型的时候,他们是使用websocket 来建立对话,而且星火大模型开放的测试代码,质量上不咋地(20231030记录),还需要对websocket有一定的了解,才适合自己微调。 安装: 参考【python: websocket获取实时数据的几种常见链接方式】常见的两种。 需要pip ins

    2024年02月02日
    浏览(36)
  • 【OneNET】_01_使用微信小程序通过新版OneNET平台获取STM32设备信息并进行控制

    笔者在这先简单介绍一下自己的整个系统,以好让各位朋友能够快速了解这篇文章对自己是否有帮助。 通过MQTT协议(笔者是直接给ESP01S刷了MQTT的AT固件,这种方法简单方便)将采集到的光照、设备电量和开锁信息上传到OneNET平台(这个过程就是向云平台你所创建设备发布主

    2024年04月24日
    浏览(173)
  • Win32API操作文件

     在Windows编程中CreateFile函数是用得非常多的,不仅可以打开文件,还可以打开管道、邮槽、通信资源、磁盘设备(早期Windows),控制台、目录。该函数返回一个句柄,该句柄可用于根据文件或设备以及指定的标志和属性访问文件或设备以获取各种类型的I/O。 CreateFileW ()函数

    2024年02月11日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包