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实现远程调用MetaSploit的方法
Aug 22 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Python的Lambda函数用法详解
Sep 03 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
Keras: model实现固定部分layer,训练部分layer操作
Jun 28 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python从ftp获取文件并下载到本地
Dec 05 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
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
js 函数性能比较方法
2020/08/24 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
物流专业专科生职业生涯规划书
2014/09/14 职场文书
出生医学证明书
2014/09/15 职场文书
街道社区活动报告
2015/02/05 职场文书
学校教师培训工作总结
2015/10/14 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技