这里仅仅是以操作windows下的文件夹来演示pywinauto的几个api,实际操作文件夹和文件是可以用其他库的哦
import time import json from pywinauto import Application, keyboard import pyautogui from subprocess import Popen import os def test_explorer(): exe_path = r'C:\Windows\explorer.exe' app = Application(backend='uia') # app = app.start(exe_path) # p = Popen(exe_path) # 这种方式不可行,app.windows()都找不到窗口 # app = app.connect(process=p.pid) # os.system(exe_path) # 启动程序,直接打开explorer.exe效果没有双击图标好,有时候切换目录失败,有时候全选删除文件失败 os.system(fr"{exe_path} d:\baidu") # 未了防止以上问题,这里打开一个指定的目录 # 通过程序图标的图片在屏幕中找到图标 # 然后双击图标启动程序 # box = pyautogui.locateOnScreen(r'd:\baidu.png') # x, y = pyautogui.center(box) # pyautogui.doubleClick(x, y) # 连接到程序 app = app.connect(path=exe_path) app['baidu'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}') # 切换目录 # app['文件资源管理器'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}') # 切换目录 temp = app['temp'] # 获取到切换的目录的窗口 # keyboard.send_keys('^a') # 删除当前目录中的文件 # time.sleep(1) # keyboard.send_keys('{DELETE}') temp.type_keys('^a').type_keys('{VK_DELETE}') time.sleep(5) # 等待删除完毕 def make_dirs(n): for i in range(1, n+1): temp['新建文件夹'].click() # Button类型可直接click time.sleep(0.5) # 停顿一下,防止下面输入名称时少输入字符 # 修改目录的名称 keyboard.send_keys(f'这是一个自动创建的目录{i}' '{ENTER}' ) # os.mkdir(fr'd:\temp\这是一个自动创建的目录{i}') make_dirs(10) # 获取当期目录的文件列表 files = temp.child_window(title="项目视图", control_type="List").children(control_type='ListItem') rows = [] for file in files: columns = file.children() row = {} for column in columns: properties = column.legacy_properties() # 获取属性信息 row[properties['Name']] = properties['Value'] rows.append(row) print(json.dumps(rows, ensure_ascii=False)) # 点击删除按钮 # temp.window(title="组织", control_type="ToolBar").button('删除').type_keys('{ENTER}') # 没有click方法,借助回车实现点击功能 # 打印出当前窗口的控件树 # print(app['temp'].dump_tree()) def main(): test_explorer() if __name__ == '__main__': main()