Python win32gui exe自动化点击捞取报表
打开应用使用到win32api
import win32con
import win32gui
import time
from time import sleep
import win32api
import win32com.client
win32api.ShellExecute(1, 'open', '%s'%app_path, '', '', win32con.SW_SHOW)
首先获取应用的句柄
win32gui.FindWindow(None, "Main") #类名,标题
# 可以通过再次判断是否存在该句柄
while not MainWin: # 强制获取句柄,如无意外的话,可以添加次数控制,或时间控制MainWin = win32gui.FindWindow(None, "Main") # 类名,标题
获取应用后将应用置顶层
shell = win32com.client.Dispatch("WScript.Shell")# 创建一次即可
#如多次创建后或将致使程序崩溃, Dispatch 用调用到线程。shell.SendKeys('%')# 使用SetForegroundWindow前要进行键入操作
win32gui.SetForegroundWindow(MainWin) # 句柄,置为第一层
遍历子窗口
hwndChildList1 = []
win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), hwndChildList1)
print(hwndChildList1)# 遍历获取子控件及窗口for i in hwndChildList1:print(i)# 控件print(win32gui.GetWindowText(i))# 句柄的名称print(win32gui.GetClassName(i))# 句柄的类名text = win32gui.GetWindowText(i)#
传回按键
# OK_hwnd 找到句柄后 传入按键Enter
win32gui.PostMessage(OK_hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.PostMessage(OK_hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)# 关闭
win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
win32gui.PostMessage(Main_hwnd, win32con.WM_CLOSE, 0, 0)
使用鼠标点击
def mouse_click(a, b):# x,ytime.sleep(1)win32api.SetCursorPos((a, b))time.sleep(1)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) # 360会拦截虚拟按键,可以添加信任或者关闭360win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
COMBOBOX与EDIT的选择
# 应用于Combox类的选项
item_index = 1 # 索引值是从0开始的,这里是第3项
win32api.SendMessage(combox_hwnd , win32con.CB_SETCURSEL, item_index, 0)for i in hwndChildList1:print(i)print(win32gui.GetWindowText(i))print(win32gui.GetClassName(i))Clstext = win32gui.GetClassName(i)text = win32gui.GetWindowText(i) if "COMBOBOX" in Clstext:combox_hwnd = iitem_index = 1 # 索引值是从0开始的,这里是第3项win32api.SendMessage(i, win32con.CB_SETCURSEL, item_index, 0)if "EDIT" in Clstext:# EDIT文本框count_edit +=1 if count_edit ==1:win32gui.SendMessage(i,win32con.WM_SETTEXT,None,end_date)else:win32gui.SendMessage(i,win32con.WM_SETTEXT,None,start_date)
过程主要是模拟人手点击的过程,
从打开应用,填入相应信息点击导出再到保存路径,最后保存。
每一步如若涉及到新的窗口需要重新获取句柄,且读取获取句柄下的子控件且子窗口的句柄,获取相应text及class 类在根据相应需求的句柄进行填写,
Python win32gui exe自动化点击捞取报表相关推荐
- python编写自动化脚本工具_blog/技巧与工具04-python控制鼠标自动化点击脚本.md at master · tigeroses/blog · GitHub...
title date tags category 技巧与工具04-python控制鼠标自动化点击脚本 2017-06-24 10:04:28 -0700 python pyautogui tools ...
- Python + Selenium + Chrome Driver 自动化点击+评论+刷弹幕(仅供学习)
Python + Selenium + Chrome Driver 自动化点击 评论 刷弹幕 首先说明,这篇博文仅供学习!仅供学习!仅供学习! 不要拿去做其他事,封号概不负责!!! 突发奇想 首先先说 ...
- python+pywinauto+lackey实现pc端exe自动化
python+pywinauto+lackey实现PC端exe自动化 欢迎阅读 框架介绍 环境搭建 Tim自动化 完整代码 写在最后 欢迎阅读 最近一年多一直在从事PC端exe的测试,也是趁着闲余时间 ...
- Excel、Python靠边站,这才是实现报表自动化最快的方法
最近在跟隔壁部门闲聊的时候,我发现会有这样的情况.他们跟我吐槽说,每天需要花很多时间做报表,但我发现其实他们80%的报表都是机械.重复式的手工操作,最夸张的一张报表需要花两个小时才能更新完.作为报表老 ...
- Python自动化办公 | 如何实现报表自动化?
本篇文章将带你了解报表自动化的流程,并教你用Python实现工作中的一个报表自动化实战,篇幅较长,建议先收藏,文章具体的目录为: 1.Excel的基本组成 2.一份报表自动化的流程 3.报表自动化实战 ...
- python模拟鼠标键盘点击,简单自动化动物餐厅
Python模拟鼠标键盘点击自动化 首先在玩动物餐厅的时候发现他需要连续点击才能完成任务,而这有是一项枯燥而复杂的任务,所以我就想到用python的鼠标模拟来自动完成 Python中模拟键盘和鼠标最著 ...
- Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)
前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...
- python转换成exe后一闪而过_解决python xx.py文件点击完之后一闪而过的问题
解决python xx.py文件点击完之后一闪而过的问题 1.问题复现: 有时候我们去点击.py文件 文件里明明有打印信息,却一闪而过,没有任何显示 比如以下内容 #!/usr/local/bin/p ...
- python+appium 实现抖音自动化点击滑动
引言 本篇文章环境配置是又臭又长,想直接看代码的老铁,可以直接跳到后边 所需环境 python 这里我用的是3.6 appium 所需要的环境配置: jdk1.8.0 android sdk 模拟器: ...
最新文章
- 六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步
- 微信支付的坑 返回值 -1
- native react 集成微信登录_react native 接入微信登陆(Android)
- 数据库事务隔离技术之 Next-Key Locks
- [转]UTF-8 GBK UTF8 GB2312 之间的区别和关系
- asp.net生命周期
- java GZIP压缩和解压
- QuickWAP 2.x注册方法和购买注意事项
- cat依赖的org.unidal.maven.plugins:plexus-maven-plugin:pom:2.1.2
- Raspberry PI 上手记
- 计算机编程常见if语句,if编程搞笑语句
- HoloView -- Tabular Datasets
- QCC512x QCC302x PIO 按键
- 怎样找一张图片的原图、出处?最全搜图网站+具体案例分享
- snipaste_截图神器
- 【转】用深度学习揭示数据的因果关系
- 游戏HTML翻翻乐,大班益智游戏翻翻乐教案
- python词云分析难吗_【python数据挖掘】使用词云分析来分析豆瓣影评数据
- Launching unittests with arguments python -m unittest
- Python_静态方法