text.py 4.8 KB
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}")