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之编写类之二方法
Oct 11 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
不要用强制方法杀掉python线程
Feb 26 Python
python验证码识别实例代码
Feb 03 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
Python 文件数据读写的具体实现
Jan 24 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python实现上下文管理器的方法
Aug 07 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 文章调用类代码
2011/08/11 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
js自带函数备忘 数组
2006/12/29 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
在Python中移动目录结构的方法
2016/01/31 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
暑期社会实践感言
2014/02/25 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
永远是春天观后感
2015/06/12 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技