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中optionParser模块的使用方法实例教程
Aug 29 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
Python+Opencv识别两张相似图片
Mar 23 Python
Python 绘图和可视化详细介绍
Feb 11 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
opencv与numpy的图像基本操作
Mar 08 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
如何在pycharm中安装第三方包
Oct 27 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项目的方法
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
ThinkPHP之getField详解
2014/06/20 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
iframe实用操作锦集
2014/04/22 Javascript
node.js中watch机制详解
2014/11/17 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
python查找第k小元素代码分享
2013/12/18 Python
在Python中使用列表生成式的教程
2015/04/27 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
房产公证书范本
2014/04/10 职场文书
HR求职自荐信范文
2014/06/21 职场文书
党员志愿者活动方案
2014/08/28 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
基层工作经历证明
2015/06/19 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
Python各协议下socket黏包问题原理
2022/04/12 Python