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实现爬取千万淘宝商品的方法
Jun 30 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python清空命令行方式
Jan 13 Python
python中提高pip install速度
Feb 14 Python
Django使用Profile扩展User模块方式
May 14 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Python 全局空间和局部空间
Apr 06 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
php自定义函数之递归删除文件及目录
2010/08/08 PHP
php实现字符串翻转的方法
2015/03/27 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
python Celery定时任务的示例
2018/03/13 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Django中的文件的上传的几种方式
2018/07/23 Python
对Python中plt的画图函数详解
2018/11/07 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python中比较两个列表的实例方法
2019/07/04 Python
pandas-resample按时间聚合实例
2019/12/27 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
毕业生求职推荐信
2013/11/04 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
会计专业求职信范文
2014/03/16 职场文书
基层党员公开承诺书
2014/05/29 职场文书
宿舍标语大全
2014/06/19 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android