相关链接

文档:https://pywinauto.readthedocs.io/en/latest/index.html
资料:https://www.cnblogs.com/programer-xinmu78/p/10661257.html

流程分析

一、实例化、打开程序/连接程序

二、窗口指定、菜单/弹窗指定

三、控件指定、按钮指定

四、其他指定

五、鼠标/键盘等点击/输入操作

代码内容

# -*- coding: utf-8 -*-'''
深入:一、菜单选项二、弹出菜单选项点击继续持续深入pywin32比较好'''import pywinauto
from pywinauto.application import Application# =============================================================================
# #自建函数  显示所有菜单及子菜单
# =============================================================================
def showMenus(dlg):for x in dlg.menu_items():                   #显示当前窗口菜单项print(x['text'])for y in x['menu_items']['menu_items']:  #从菜单项里遍历紫菜单项print('    '+ y['text'])# =============================================================================
# #示例:启动无标题记事本
# =============================================================================
#app=Application()
#app.start('Notepad.exe')
#app.Notepad.draw_outline(colour='red')                    #当前dlg周围划线,单独输出可直观显示
#app.Notepad.print_control_identifiers(depth=100,filename='a.txt')     #当前dlg中所有控件输出:类名、标题名、位置等
#app.Notepad.type_keys('SKJAKJFSDF')
#
#dlg=app['无标题 - 记事本']
#showMenus(dlg)      #自建函数输出窗口所有菜单及子菜单
#
#dlg.WindowText()    #返回对话框的标题文本
#
#
#app['无标题 - 记事本'].menu_select('编辑->替换(&R)...')    #当前dlg菜单检索
##app['替换'].print_control_identifiers()                  #当前dlg所有控件输出
#app['替换']['取消'].click()                               #app[dlg][ctl].click()  dlg和ctl都可以通过类、标题、句柄、等来绑定
#
#app['无标题 - 记事本'].Edit.type_keys('东风吹,战鼓擂',with_spaces=True)    #如果没有with_spaces 参数,则不会输入空格。请参阅SendKeys的文档,了解此方法,因为它是SendKeys的一个薄包装器。
#
#app['无标题 - 记事本'].menu_select('文件->退出')           #菜单检索
#app['记事本']['不保存'].close_click()                     #使用close_click()而不是click()更安全,因为close_click()会等待一段时间以给窗口时间关闭对话框。# =============================================================================
# #示例:启动Tdxw2软件客户端
# =============================================================================
app=Application(backend='win32')
app.connect(path='D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')dlg=app.window(title_re='通达信金融终端V7.46',class_name='TdxW_MainFrame_Class')
dlg.print_control_identifiers(filename='输出控件文件夹\\dlg_T.txt')
dlg.draw_outline()                                #周围划线,单独输出可直观显示dlg_CD=dlg['#32770']
dlg_CD.print_control_identifiers(filename='输出控件文件夹\\dlg_CD.txt')
dlg_CD.draw_outline(colour='red')#下面开始官方文档内容:
# =============================================================================
# #新开程序 或 链接已在运行程序
# =============================================================================#新开程序
#appT2=Application().start('D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')#链接已在运行程序
#参数path=''
#参数press=
#参数handle=
#参数组合 title_re='',class_name=''#appT2=Application().connect(path='D:\\02通达信金融终端软件客户端v7.46\\TdxW.exe')# =============================================================================
# #指定对话框
# =============================================================================#符号点. 等同于 列表[]
#dig=app.top_window()    #返回程序顶端窗口
#dig=app.window(title_re='.*记事本.*',class_name='')
#print(app.windows())    #返回所有对话框# =============================================================================
# #指定控件
# =============================================================================#app.dlg.control
#app['dlg']['control']#当前会话中所有控件输出
#可选参数depth=          指定输出深度
#可选参数filename=''     指定输出目录
#app[dlg].print_control_identifiers(depth=,filename='')# =============================================================================
# #隐式等待
# =============================================================================
#wait方法#dlg.wait(“exists ready”, timeout = 5, retry_interval = 3)
#dlg.wait(wait_for, timeout = None, retry_interval = None)
#参数wait_for可传入五种参数, 可以组合传参,但要以空格隔开:
#exists: 窗口变成有效的句柄
#visible: 窗口可见,没有隐藏
#enabled: 窗口没有disable
#ready: visible + enable
#active: active
#参数timeout:设置超时时间,若在n秒内没有等到窗口在wait_for中传入的几种状态,则会抛出TimeoutError。
#参数retry_interval:超时后,间隔n秒再次重试。#wait_not方法#dlg.wait_not(wait_for_not,timeout = None,retry_interval = None)
#等待窗口不处于某种状态时。参数与wait传参一致。# =============================================================================
# #通用操作
# =============================================================================#dlg.popup_window()              #如果现实,则返回弹出窗口,如果没有弹出窗口则返回self#dlg.WindowText()                #返回对话框的标题文本
#print(dlg.menu())               #返回对话框的菜单
#dlg.menu_items()                #返回对话框的所有菜单项及紫菜单项#dlg.hide_from_taskbar()         #从Windows任务栏隐藏对话框
#dlg.is_in_taskbar()             #是否显示在Windows任务栏中
#dlg.show_in_taskbar()           #在Windows任务栏中显示该对话框#dlg.get_show_state()            #获取显示状态 1恢复状态/2最小化/3最大化
#dlg.is_maximized()              #是否最大化
#dlg.is_minimized()              #是否最小化
#dlg.is_normal()                 #是否正常(没有最小化也没有最大化)
#
#dlg.maximize()                  #最大化
#dlg.minimize()                  #最小化
#dlg.restore()                   #窗口恢复之前状态
#
##dlg.menu()                     #返回控件的菜单
##dlg.menu_item(path='')         #返回参数path指定的菜单项
##dlg.menu_items()               #返回对话框的菜单项,如果没有菜单项则返回空列表
##dlg.menu_select()              #查找路径指定的菜单项 参数 ——>
#
#dlg.move_mouse(coords=(0,0))    #移动鼠标
#dlg.move_window(x=500,y=500)    #移动窗口到位置
#dlg.minimize()
#
#dlg.popup_window()               #如果现实,则返回弹出窗口,如果没有弹出窗口则返回self
##dlg.force_close()                #强制关闭对话框并返回结果
#dlg.close()                      #关闭对话框
#dlg.close_alt_f4()               #按alt+F4关闭窗口
#dlg.close_click()                #执行应该使窗口消失的单击操作,与click()的唯一区别是点击操作之前和之后有额外的延迟。# =============================================================================
# #系统托盘
# =============================================================================
#
#from pywinauto.application import Application
#
#appS=Application().connect(path='explorer')
#systray_icons= appS.ShellTrayWnd
#systray_icons.draw_outline()
#systray_icons.print_control_identifiers(filename='systray.txt')
#
#
##systray_icons['Start'].draw_outline(colour='blue')             #开始
#
#systray_icons['MSTaskSwWClass'].draw_outline(colour='blue')    #正在运行程序
#systray_icons['TrayNotifyWnd '].draw_outline(colour='red')      #任务栏右下角区域
#systray_icons['StartButton'].draw_outline(colour='blue')       #右下角上拉键
#systray_icons['TrayClockWClass'].draw_outline(colour='red')    #时钟# =============================================================================
# #鼠标控制
# =============================================================================#pywinauto.mouse.click(button='left',coords=(0,0))    #单击指定坐标
#pywinauto.mouse.double_click(button='left',coords=(0,0))    #双击指定坐标
#pywinauto.mouse.move(coords=(0,0))    #鼠标移动到指定坐标
#
#pywinauto.mouse.press(button='left',coords=(0,0))    #指定位置按下鼠标左键
#pywinauto.mouse.release(button='left',coords=(100,200))  #指定位置释放鼠标左键
#
#pywinauto.mouse.right_click(coords=(0,0))    #右键点击指定位置
#
#pywinauto.mouse.scroll(coords=(500,500),wheel_dist=-100)    #中键滚动到指定坐标
#pywinauto.mouse.wheel_click(coords=(0, 0))    #中键单击指定坐标# =============================================================================
# #鼠标点击
# =============================================================================
#click()                    #点击Button控件
#check_by_click()           #通过click()方法勾选checkbox
#uncheck_by_click()         #通过click()方法取消勾选checkbox
#get_check_state()          #返回checkbox的勾选状态(0没勾选,1勾选,2不定)
#is_checked                 #(勾选返回true,为勾选返回false,不定返回None)
#check()                    #勾选checkbox
#uncheck()                  #不勾选checkbox
#invoke()                   #点击(uia mode)
#toggle()                   #勾选checkbox(uia mode)# =============================================================================
# #键盘操作
# =============================================================================
#type_keys('')'''
SHIFT                            +
CTRL                             ^
ALT                               %
空格键                            {SPACE}BACKSPACE                        {BACKSPACE}、{BS}   or   {BKSP}
BREAK                            {BREAK}
CAPS   LOCK                      {CAPSLOCK}
DEL   or   DELETE                {DELETE}   or   {DEL}
DOWN   ARROW                     {DOWN}
END                              {END}
ENTER                            {ENTER}   or   ~
ESC                              {ESC}
HELP                             {HELP}
HOME                             {HOME}
INS   or   INSERT                {INSERT}   or   {INS}
LEFT   ARROW                     {LEFT}
NUM   LOCK                       {NUMLOCK}
PAGE   DOWN                      {PGDN}
PAGE   UP                        {PGUP}
PRINT   SCREEN                   {PRTSC}
RIGHT   ARROW                    {RIGHT}
SCROLL   LOCK                    {SCROLLLOCK}
TAB                              {TAB}
UP   ARROW                       {UP}
+                                {ADD}
-                                {SUBTRACT}
*                                {MULTIPLY}
/                                {DIVIDE}
F1                               {F1}
F2                               {F2}
F3                               {F3}
.....
F15                              {F15}
F16                              {F16}
'''

pywinauto模块 窗口自动化操作相关相关推荐

  1. Python的pyautogui模块,自动化操作的强大工具

    在Python当中,不仅代码简单,而且有着非常丰富的模块,pyautogui就可以称之为自动化操作的"神器". 为什么说是神器呢?百度的搜索的解释如下: PyAutoGUI是一个纯 ...

  2. pyautogui自动化操作脚本

    之前针对加密视频播放编写了一个自动答题的脚本(使用易语言 大漠插件所编写的) 还有商户自动话术回复的(也是易语言+大漠插件) 还有使用autojs所编写的一个针对安卓端钉钉的自动签到 还有一个某宝领喵 ...

  3. Python学习(六) 史上最全Pywinauto模块自动化操作软件

    1本文设计内容较多,但是都不难,都是干货.耐心看下文. 工作中资源更新需要重复行操作软件,这不符合程序的一贯作风,所以使用pywinauto 这个python 模块,实现自动化操作软件.只需鼠标一点, ...

  4. python实现自动按键_Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模 ...

  5. Pywinauto自动化操作PC微信提取好友微信号

    声明:https://zhuanlan.zhihu.com/p/29944988#! /usr/bin/env python #coding=utf-8 #pywinauto自动化操作微信号 #by ...

  6. 深入理解:scp,rsync,sftp,xsync等命令的基本使用方法,以及cmd命令窗口下进行相关的ssh命令操作

    深入理解:scp,rsync,sftp,xsync等命令的基本使用方法,以及cmd命令窗口下进行相关的ssh命令操作 一·scp命令使用方法:参考链接 二·rsync命令使用方法:参考链接 三·xsy ...

  7. 自动化运维---ansible常用模块之文件操作(findreplace模块)

    自动化运维-ansible常用模块之文件操作(find&replace模块) 文章目录 自动化运维---ansible常用模块之文件操作(find&replace模块) 1.find模 ...

  8. 已解决python selenium模块自动化操作谷歌浏览器点击元素失效问题解决(亲测有效)

    已解决python selenium模块自动化操作浏览器点击元素,抛出异常selenium.common.exceptions.ElementClickInterceptedException: Me ...

  9. #CSDN21天学习挑战赛#Python入门之pdfplumber模块-自动化操作PDF文件详细教程教(1)

    ​开卷有益!作者Amily1123是初学python的科研"狗",每天大量的工作是跟pdf.word.excel等文件打交道.最希望的事情就是提高工作效率,能够用最少得精力产出最多 ...

最新文章

  1. 个人笔记------注释代码(神兽)
  2. c++ socket 结构体
  3. 框架:初识Spring
  4. 机器学习导论(张志华):渐近性质
  5. 机器学习理论梳理2 : KNN K近邻分类模型
  6. 【C语言进阶深度学习记录】九 C语言中const的详细分析
  7. zillow房价预测比赛_Kaggle竞赛 —— 房价预测 (House Prices)
  8. vue 属性 computed
  9. 宋宝华:当Linux内核遭遇鲨鱼—kernelshark
  10. 通过高德地图获取 经纬度 以及地理位置等
  11. 【2023年中国法定节假日的订阅链接】
  12. 磁盘格式怎么转换?Tuxera NTFS对磁盘进行不同格式转换教程
  13. golang 自定义日志
  14. iOS 在TabBarController视图切换的时候添加动画
  15. Barrier与多线程
  16. Linux 块驱动之一
  17. 关于“未能加载文件或程序集”的解决方法
  18. Python学习手册(第4版) pdf
  19. Web3是未来还是大忽悠?
  20. 计算机培训微课设计与实现,微课设计与制作

热门文章

  1. UEL手册中变量解释
  2. 二、使用阿里的easyExcel进行导入导出
  3. 使用Go语言处理xml文件
  4. [Abp 源码分析]五、系统设置
  5. java如何获得内网ip、外网ip、以及如何根据ip查询地址
  6. 在多线程中输出时间戳是否会重复
  7. 安装ubantu18.04到移动硬盘
  8. oracle视图不可更新,Oracle内联视图更新遇到的问题.
  9. python用8g还是16g内存好_请问电脑内存是买8g的好还是16g的好
  10. 视频文件去底色怎么操作