获取句柄:(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) # 父句柄