羽中飞人 2023-05-14 22:15 采纳率: 48.1%
浏览 98
已结题

关于pywinauto自动化的问题

现在在尝试用pywinauto获取聊天记录,但遇到了很多困难,谁有代码可以学习一下呢
下面是我写的代码,才刚起步,聊天内容的时间、文本、微信名都不知如何获取

app = Application(backend='uia').connect(process=PID)
win = app['微信']
dlg = win.child_window(title='聊天记录', control_type='Button')
dlg.draw_outline(colour='red')
dlg.click_input()
time.sleep(3)
mes_dlg = app['微信名']
mes_list = mes_dlg.child_window(title='全部', control_type='List')
 for mes in mes_list.items():
  value = mes_dlg.child_window(control_type="Edit")   # 这里不知如何搞了

  • 写回答

8条回答 默认 最新

  • CF2301_77400554X 2023-05-14 22:29
    关注

    引用chatgpt部分指引作答:
    获取微信聊天记录是一个比较复杂的任务,需要对UI元素进行识别和操作。下面是一个简单的示例代码,可以获取微信聊天窗口中的文本消息内容和发送时间,您可以参考一下:

    from pywinauto.application import Application
    import time
    
    # 启动微信
    app = Application(backend='uia').start('微信.exe')
    time.sleep(5)
    
    # 连接微信进程
    app = Application(backend='uia').connect(title='微信', timeout=10)
    
    # 进入聊天窗口
    chat = app['微信']
    chat.child_window(title='聊天', control_type='Button').click_input()
    chat.child_window(title='搜索', control_type='ToolBar').click_input()
    chat.child_window(title='搜索', control_type='ToolBar').type_keys('微信名')
    chat.child_window(title='微信名', control_type='ListItem').click_input()
    
    # 获取聊天记录
    mes_dlg = app['微信名']
    mes_list = mes_dlg.child_window(title='聊天记录', control_type='List')
    for mes in mes_list.children():
        try:
            # 获取消息发送时间
            time_item = mes.child_window(class_name='Static', control_type='Text')
            send_time = time_item.window_text()
    
            # 获取消息文本内容
            content_item = mes.child_window(class_name='RichEdit20W', control_type='Edit')
            content = content_item.window_text()
    
            print(send_time, content)
        except Exception as e:
            print('Error:', e)
    

    需要注意的是,聊天记录窗口中的UI元素可能因微信版本而异,需要根据实际情况进行调整。此外,由于微信中的UI元素比较多,有时候需要一定的延时来保证程序的稳定性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月14日