• python和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)
  • 相关阅读:
    P3396 哈希冲突 TJ
    U135884 膜法问题 TJ
    U135075 简单数列 TJ
    U135649 皇室战争 TJ
    SF&SJJG-ST表
    牛客NOIP集训三S 牛半仙的妹子数 TJ
    UVA297 四分树 Quadtrees TJ
    UVA679 小球下落 Dropping Balls TJ
    [ACM] CF水题记
    Hoppz的收藏夹
  • 原文地址:https://www.cnblogs.com/zoro-robin/p/5591185.html
Copyright © 2020-2023  润新知