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


Posted in Python onApril 01, 2020

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")

到此这篇关于python和pywin32实现窗口查找、遍历和点击的示例代码的文章就介绍到这了,更多相关pywin32 窗口查找、遍历和点击内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
详解如何使用Python编写vim插件
Nov 28 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
python组合无重复三位数的实例
Nov 13 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
详解Python中namedtuple的使用
Apr 27 Python
Python ORM框架Peewee用法详解
Apr 29 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
python爬取豆瓣电影TOP250数据
May 23 Python
python自动脚本的pyautogui入门学习
Apr 01 #Python
Python自动重新加载模块详解(autoreload module)
Apr 01 #Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 #Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 #Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 #Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 #Python
详解Python中pyautogui库的最全使用方法
Apr 01 #Python
You might like
Laravel中任务调度console使用方法小结
2017/05/07 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
Javascript动画效果(4)
2016/10/11 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python常用库推荐
2016/12/04 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python实现人机猜拳小游戏
2020/02/03 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
测试工程师职业规划书
2014/02/06 职场文书
成立公司计划书
2014/05/07 职场文书
学校课外活动总结
2014/05/08 职场文书
保密工作整改报告
2014/11/06 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
学校社团活动总结
2015/05/07 职场文书
汽车车尾标语大全
2015/08/11 职场文书
高中地理教学反思
2016/02/19 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技