学习python窗口句柄、后台鼠标点击等知识笔记

Eva ·
更新时间:2024-11-10
· 582 次阅读

获取句柄:(ParentName为对应窗口的完整名称(字符串),实在确定不了可以用按键抓抓的句柄抓取获得) parent = win32gui.FindWindow(0,ParentName) 获取子句柄:(ChildClass为子句柄的类名(字符串)) child= win32gui.FindWindowEx(parent,None,ChildClass, None) 鼠标点击(可后台):(hwnd为需要点击的窗口句柄,cx、cy为点击位置在该窗口的相对坐标def doClick(cx,cy): long_position = win32api.MAKELONG(cx, cy)#模拟鼠标指针 传送到指定坐标 win32api.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)#模拟鼠标按下 win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)#模拟鼠标弹起 不知道为什么,我用第三方工具抓取的坐标一直有问题,就写了一段计算相对坐标的代码。当时主要跳的坑有计算的时候用的是我要找的那个窗口的父句柄,以至于坐标一直有偏差,后来意识到子句柄才是要找的,修改了一下,坐标就正确了。 # -*- coding:utf-8 -*- import win32gui,win32api import time wdname = u'父句柄名称' hwnd = win32gui.FindWindow(0, wdname) # 父句柄 hwnd1 = win32gui.FindWindowEx(hwnd, None,'类名称', None) # 目标子句柄 windowRec = win32gui.GetWindowRect(hwnd1) # 目标子句柄窗口的坐标 while True: tempt = win32api.GetCursorPos() # 记录鼠标所处位置的坐标 x = tempt[0]-windowRec[0] # 计算相对x坐标 y = tempt[1]-windowRec[1] # 计算相对y坐标 print(x,y) time.sleep(0.5) # 每0.5s输出一次

主要的问题是一开始没有搞懂父句柄和子句柄的概念,以及一开始把前台鼠标点击和后台鼠标点击混为一谈了,两者有很大的不同。前台是模拟鼠标点击这个动作,而后台是发送“鼠标点击”这个信息。

参考:
python win32api win32gui win32con 窗口句柄 发送消息 常用方法 键盘输入
取色,大漠识别和后台点击
python和pywin32实现窗口查找、遍历和点击
[Python] 用python做一个游戏辅助脚本,完整思路
python中的句柄操作
通过pywin32库来上传文件


作者:ANTARES!



句柄 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号