一.获取句柄的两种方法:
- handle = win32gui.FindWindow(classname, title)
- handle = win32gui.GetForegroundWindow()--------------<获取所有窗口最上面的句柄>
二.获取字句柄的方法:
- hwnd = win32gui.FindWindowEx(parent_handle, handle_brother, classname, title)
-
获取父句柄的所有字句柄 hwnd_childLists = [] win32gui.EnumChildWindows(parent_handle, lambda hwnd, param: param.append(hwnd), hwnd_childLists)
三.获取句柄后的一系列操作
- 根据句柄获取句柄所对应的的窗口的大小
- left,top,right,bottom = win32gui.GetWindowRect(handle)
- 获取句柄对应的某个类名和标题
- title = win32gui.GetWindowsText(handle)
- class_name = win32gui.GetClassName(handle)
- 根据句柄获取edit控件的长度
def get_edit(handle):
'''
获取edit输入框里的数据
:param handle: 输入框的句柄
:return: 返回输入框里的数据
'''
# 获取edit控件文本长度
length = win32gui.SendMessage(handle, win32con.WM_GETTEXTLENGTH) + 1
buf = win32gui.PyMakeBuffer(length)
# 发送获取文本请求
win32api.SendMessage(handle, win32con.WM_GETTEXT, length, buf)
# 进行文本读取
address, length = win32gui.PyGetBufferAddressAndLen(buf[:-1])
text = win32gui.PyGetString(address, length)
return text
- 虚拟鼠标点击按钮(或者回车)
- 根据句柄进行回车
- win32gui.PostMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0) win32gui.PostMessage(handle, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
- 根据句柄进行点击
# win32gui.PostMessage(8720594, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0) # win32gui.PostMessage(8720594, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)
- 根据句柄进行回车
- 获取显示器屏幕大小
- width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
- height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
- 点击按钮
- win32gui.SendMessage(handle, win32con.BM_CLICK, 0, 0)
- 关闭窗口
-
win32gui.PostMessage(handle, win32con.WM_CLOSE, 0, 0)
-
- 通过句柄填充输入框的数据
-
win32gui.SendMessage(account_handle, win32con.WM_SETTEXT, 0, account)
-
- 获取弹窗里的文字
- handle = win32gui.FindWindow(classname, 窗体title) # 获取弹窗的句柄
- text = handle.GetDigItemText(0xFFFF) # 获取弹窗里的消息文字
- 窗体最小化
- win32gui.CloseWIndow(handle)
- 窗体最大化
-
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
-