今天要實現的是,打開或連接一個記事本
向記事本里輸入內容
然后復制粘貼
查看記事本
對文字放大並還原
替換所有文字
保存
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)