from pywinauto import Application, Desktop from pywinauto.timings import wait_until_passes, TimeoutError import os import logging # 确保日志配置是第一个被执行的语句 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') def check_path(): path = r"D:\腾讯会议\WeMeet\WeMeetApp.exe" if not os.path.exists(path): logging.error(f"路径 {path} 不存在") return False if not os.access(path, os.X_OK): logging.error(f"路径 {path} 不可执行") return False logging.info(f"路径 {path} 存在且可执行") return True def find_window(app, title_re): try: window = app.window(title_re=title_re) logging.info(f"找到窗口: {window.window_text()}") return window except Exception as e: logging.error(f"查找窗口时出错: {e}") return None def print_all_window_titles(): desktop = Desktop(backend="uia") for window in desktop.windows(): logging.info(f"窗口标题: {window.window_text()}") def tx_run(): logging.debug("tx_run 函数开始执行") # 启动腾讯会议 try: app = Application(backend="uia").start(r"D:\腾讯会议\WeMeet\WeMeetApp.exe") logging.debug("启动腾讯会议完成") except Exception as e: logging.error(f"启动腾讯会议时出错: {e}") return # 打印所有窗口标题 print_all_window_titles() # 等待腾讯会议窗口出现 try: wait_until_passes(60, 1, lambda: app.window(title_re=".*腾讯会议.*").exists()) logging.info("腾讯会议窗口已找到") except TimeoutError: logging.error("腾讯会议窗口未在规定时间内出现") return # 连接到腾讯会议窗口 main_window = find_window(app, ".*腾讯会议.*") if main_window is None: return # 打印窗口中的所有控件信息 main_window.print_control_identifiers() # 点击“加入会议”按钮 try: join_button = main_window.child_window(title="加入会议", control_type="Button") logging.info(join_button.window_text()) # 打印按钮标题以验证控件是否找到 join_button.click() logging.info("点击“加入会议”按钮完成") except Exception as e: logging.error(f"点击“加入会议”按钮时出错: {e}") return # 等待加入会议窗口出现 try: wait_until_passes(60, 1, lambda: app.window(title_re=".*加入会议.*").exists()) logging.info("加入会议窗口已找到") except TimeoutError: logging.error("加入会议窗口未在规定时间内出现") return # 输入会议号 meeting_id = "123456789" # 替换为实际的会议号 try: meeting_id_edit = main_window.child_window(title="会议号", control_type="Edit") logging.info(meeting_id_edit.window_text()) # 打印编辑框标题以验证控件是否找到 meeting_id_edit.type_keys(meeting_id) logging.info("输入会议号完成") except Exception as e: logging.error(f"输入会议号时出错: {e}") return # 点击“加入”按钮 try: join_meeting_button = main_window.child_window(title="加入", control_type="Button") logging.info(join_meeting_button.window_text()) # 打印按钮标题以验证控件是否找到 join_meeting_button.click() logging.info("点击“加入”按钮完成") except Exception as e: logging.error(f"点击“加入”按钮时出错: {e}") return # 等待会议界面出现 try: wait_until_passes(60, 1, lambda: app.window(title_re=".*腾讯会议.*").exists()) logging.info("会议界面已找到") except TimeoutError: logging.error("会议界面未在规定时间内出现") return # 静音麦克风 try: mute_button = main_window.child_window(title="麦克风", control_type="Button") logging.info(mute_button.window_text()) # 打印按钮标题以验证控件是否找到 mute_button.click() logging.info("静音麦克风完成") except Exception as e: logging.error(f"静音麦克风时出错: {e}") return # 退出会议 try: end_meeting_button = main_window.child_window(title="结束会议", control_type="Button") logging.info(end_meeting_button.window_text()) # 打印按钮标题以验证控件是否找到 end_meeting_button.click() logging.info("结束会议完成") except Exception as e: logging.error(f"结束会议时出错: {e}") return logging.debug("tx_run 函数执行完毕") if __name__ == "__main__": try: if check_path(): tx_run() except Exception as e: logging.error(f"程序执行时出错: {e}")