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深入学习之特殊方法与多范式
Aug 31 Python
详细解析Python中__init__()方法的高级应用
May 11 Python
浅谈Python 对象内存占用
Jul 15 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
python实现简单飞行棋
Feb 06 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
django使用多个数据库的方法实例
Mar 04 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
PHP中的use关键字概述
2014/07/23 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
python使用pil生成图片验证码的方法
2015/05/08 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python实现打印实心和空心菱形
2019/11/23 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
授权委托书范本
2014/04/03 职场文书
高三霸气励志标语
2014/06/24 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫