网络编程
位置:首页>> 网络编程>> Python编程>> python和pywin32实现窗口查找、遍历和点击的示例代码

python和pywin32实现窗口查找、遍历和点击的示例代码

作者:zoro_robin  发布时间:2023-04-06 19:01:23 

标签:pywin32,窗口,查找,遍历,点击

Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等。

1.通过类名和标题查找窗口句柄,并获得窗口位置和大小


import win32gui
import win32api
classname = "MozillaWindowClass"
titlename = "百度一下,你就知道 - Mozilla Firefox"
#获取句柄
hwnd = win32gui.FindWindow(classname, titlename)
#获取窗口左上角和右下角坐标
left, top, right, bottom = win32gui.GetWindowRect(hwnd)

2.通过父句柄获取子句柄


def get_child_windows(parent):  
'''  
获得parent的所有子窗口句柄
 返回子窗口句柄列表
 '''  
if not parent:  
 return  
hwndChildList = []  
win32gui.EnumChildWindows(parent, lambda hwnd, param: param.append(hwnd), hwndChildList)  
return hwndChildList

#获取某个句柄的类名和标题
title = win32gui.GetWindowText(hwnd)  
clsname = win32gui.GetClassName(hwnd)  

#获取父句柄hwnd类名为clsname的子句柄
hwnd1= win32gui.FindWindowEx(hwnd, None, clsname, None)

3.鼠标定位与点击


#鼠标定位到(30,50)
win32api.SetCursorPos([30,150])
#执行左单键击,若需要双击则延时几毫秒再点击一次即可
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
#右键单击
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)

4.发送回车键


win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)

5.关闭窗口


win32gui.PostMessage(win32lib.findWindow(classname, titlename), win32con.WM_CLOSE, 0, 0)

win32gui遍历窗口并设置窗口位置


import win32gui
import win32con
def reset_window_pos(targetTitle):
 hWndList = []
 win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)
 for hwnd in hWndList:
   clsname = win32gui.GetClassName(hwnd)
   title = win32gui.GetWindowText(hwnd)
   if (title.find(targetTitle) >= 0):  #调整目标窗口到坐标(600,300),大小设置为(600,600)
     win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 600,300,600,600, win32con.SWP_SHOWWINDOW)

reset_window_pos("windowName")

来源:https://www.cnblogs.com/zoro-robin/p/5591185.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com