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 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
python访问类中docstring注释的实现方法
May 04 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
python实现简单爬虫功能的示例
Oct 24 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
python中itertools模块zip_longest函数详解
Jun 12 Python
python中metaclass原理与用法详解
Jun 25 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
Django使用rest_framework写出API
May 21 Python
Python可以实现栈的结构吗
May 27 Python
Python简单实现词云图代码及步骤解析
Jun 04 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来实现网络服务
2009/09/15 PHP
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
python九九乘法表的实例
2017/09/26 Python
Python中单、双下划线的区别总结
2017/12/01 Python
对Python中的@classmethod用法详解
2018/04/21 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
Python中生成ndarray实例讲解
2021/02/22 Python
Viking比利时:购买办公用品
2019/10/30 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
青春奉献演讲稿
2014/05/08 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
golang生成vcf通讯录格式文件详情
2022/03/25 Golang