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装饰器基础详解
Mar 09 Python
pytorch构建网络模型的4种方法
Apr 13 Python
python数字图像处理实现直方图与均衡化
May 04 Python
python实现多进程代码示例
Oct 31 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python字符串反转的四种方法详解
Dec 02 Python
Python中Subprocess的不同函数解析
Dec 10 Python
python模拟点击网页按钮实现方法
Feb 25 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
Python实现生活常识解答机器人
Jun 28 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的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
原生js实现分页效果
2020/09/23 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
python发送邮件实例分享
2017/07/28 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python实现Decorator模式实例代码
2018/02/09 Python
Python内置模块logging用法实例分析
2018/02/12 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
质检员岗位职责
2015/02/03 职场文书
护士先进个人总结
2015/02/13 职场文书
地道战观后感300字
2015/06/04 职场文书
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers