今天要实现的是,打开或连接一个记事本
向记事本里输入内容
然后复制粘贴
查看记事本
对文字放大并还原
替换所有文字
保存
from pywinauto import application from pywinauto.keyboard import send_keys import pyautogui import subprocess import re #获取notepad的pid def get_pid(app): cmd="tasklist | findstr {}".format(app) res=subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE) ret_val=res.stdout.readlines()[0].decode() print(ret_val) pid=re.findall(r"{}.*?(\d+)".format(app),ret_val) print("Get {} pid : {}".format(app,pid[0])) return int(pid[0]) # 方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序 #app = application.Application(backend=\'win32\').start(\'notepad.exe\') # 方式二:查看要打开的程序进程号,通过process指定进程号连接 app = application.Application().connect(process=get_pid("notepad")) # 方式一 :不适用于窗口名为中文的 #wind_1 = app.窗口名 # 方式二 :窗口名可以为中文 #wind_2 = app["窗口名"] # 案例使用:选择上面打开的计算器程序窗口 wind_calc = app[\'无标题 - 记事本\'] print(wind_calc.print_control_identifiers()) edit = app[\'无标题 - 记事本\'] edit.type_keys("柠檬班") edit.type_keys("python自动化") edit.type_keys("musen") #全选 send_keys("^a") #复制 send_keys("^c") #粘贴 send_keys("^v") #回车 send_keys("{VK_RETURN}") send_keys("^v") send_keys("{VK_RETURN}") send_keys("^v") #按住home键 pyautogui.keyDown(\'home\') pyautogui.keyUp(\'home\') print(wind_calc.menu()) def list_menu(menu_item, space): \'\'\' 作用:递归法遍历菜单 \'\'\' for i in menu_item.items(): if(len(i.text()) > 0): print(space + i.text()) if(i.sub_menu() != None): list_menu(i.sub_menu(), " " + space) list_menu(wind_calc.menu(), "") wind_calc.menu_select("帮助->关于记事本") send_keys("{VK_RETURN}") wind_calc.menu_select("查看->缩放->放大") wind_calc.menu_select("查看->缩放->放大") wind_calc.menu_select("查看->缩放->放大") wind_calc.menu_select("查看->缩放->放大") wind_calc.menu_select("查看->缩放->&恢复默认缩放") wind_calc.menu_select("编辑->替换(&R)") pyautogui.write("python") pyautogui.press("tab") pyautogui.write("C laguange") pyautogui.press("tab") pyautogui.press("tab") pyautogui.press("tab") pyautogui.press("tab") pyautogui.press("tab") pyautogui.keyDown("enter") pyautogui.keyDown("esc") wind_calc.menu_select("文件->保存(&S)") pyautogui.write("my_pywinauto") pyautogui.keyDown("enter") # pyautogui.keyDown("enter")
notepad.exe 11228 Console 2 35,060 K Get notepad pid : 11228 Control Identifiers: Notepad - \'*无标题 - 记事本\' (L189, T54, R1214, B579) [\'*无标题 - 记事本\', \'Notepad\', \'*无标题 - 记事本Notepad\'] child_window(title="*无标题 - 记事本", class_name="Notepad") | | Edit - \'柠檬班python自动化musen\r\n柠檬班python自动化musen\r\n柠檬班python自动化musen\' (L197, T105, R1206, B549) | [\'Edit\', \'*无标题 - 记事本Edit\'] | child_window(title="柠檬班python自动化musen\r\n柠檬班python自动化musen\r\n柠檬班python自动化musen", class_name="Edit") | | StatusBar - \'\' (L197, T549, R1206, B571) | [\'*无标题 - 记事本StatusBar\', \'StatusBar Windows (CRLF)\', \'StatusBar 第 3 行,第 1 列\', \'StatusBar\', \'StatusBar 100%\', \'StatusBar UTF-8\'] | child_window(class_name="msctls_statusbar32") None <Menu 2689599> 文件(&F) 新建(&N) Ctrl+N 新窗口(&W) Ctrl+Shift+N 打开(&O)... Ctrl+O 保存(&S) Ctrl+S 另存为(&A)... Ctrl+Shift+S 页面设置(&U)... 打印(&P)... Ctrl+P 退出(&X) 编辑(&E) 撤消(&U) Ctrl+Z 剪切(&T) Ctrl+X 复制(&C) Ctrl+C 粘贴(&P) Ctrl+V 删除(&L) Del &使用 Bing 搜索... Ctrl+E 查找(&F)... Ctrl+F 查找下一个(&N) F3 查找上一个(&V) Shift+F3 替换(&R)... Ctrl+H 转到(&G)... Ctrl+G 全选(&A) Ctrl+A 时间/日期(&D) F5 格式(&O) 自动换行(&W) 字体(&F)... 查看(&V) 缩放(&Z) 放大(&I) Ctrl + 加号 缩小(&O) Ctrl + 减号 &恢复默认缩放 Ctrl+0 状态栏(&S) 帮助(&H) 查看帮助(&H) 发送反馈(&F) 关于记事本(&A)