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中dir函数用法分析
Apr 17 Python
python实现rsa加密实例详解
Jul 19 Python
详解K-means算法在Python中的实现
Dec 05 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
详解python里的命名规范
Jul 16 Python
Python WSGI的深入理解
Aug 01 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
python中return的返回和执行实例
Dec 24 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
python实现横向拼接图片
Mar 23 Python
scrapy处理python爬虫调度详解
Nov 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
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
matplotlib中legend位置调整解析
2017/12/19 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
Python中property函数用法实例分析
2018/06/04 Python
TensorFlow实现模型评估
2018/09/07 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
使用Python封装excel操作指南
2021/01/29 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
为什么要使用servlet
2016/01/17 面试题
经销商会议欢迎词
2014/01/11 职场文书
小学国庆节活动方案
2014/02/11 职场文书
护士毕业实习感言
2014/03/05 职场文书
公司2014年度工作总结
2014/12/10 职场文书
社会实践活动报告
2015/02/05 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
pandas数值排序的实现实例
2021/07/25 Python
浅谈Vue的computed计算属性
2022/03/21 Vue.js
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis