消息列表
聊天窗口内的消息气泡列表与左侧 UIA 会话列表不同:通过 WinAuto.im_client() 创建 IM 客户端(默认内置 IM 适配器),再调用 GetNextNewMessage / GetNewMessage 等读取 Message。
完整分支处理(笔记/合并/小程序/下载等)见 消息处理指南。
API 参考
✨im_client
参数(im_client):
说明:默认内置 IM 适配器 时若
auto绑定的不是 IM 主窗口(如控件浏览器),会自动查找 IM 主窗口;不传拾取到的 Qt 类名,保证与直接构造 IM 客户端行为一致。
返回值:IM 客户端实例(为内置 IM 客户端实例)。
消息项字段(Message)
✨GetNextNewMessage(推荐:轮询新消息列表)
首帧基线:循环内第一次调用通常返回空 batch(不交付历史消息),之后才会在侧栏未读或当前聊天新消息时交付。单次调用无法持续监听。
参数:
返回值:
- 类型:
dict - 字段:
chat_name、chat_type、msg(List[Message])
✨GetNextUnreadBarMessages
处理当前聊天内「N条新消息」跳转条(不会被 GetNextNewMessage 自动处理)。
返回值:同 GetNextNewMessage;无跳转条时 {}
✨GetAllMessage / ✨GetNewMessage
✨GetNextListenChatMessage / ✨AddListenChat
独立聊天子窗口(双击会话弹出)的消息列表:
✨MakeMessageAnchor / ✨ResolveMessageByAnchor(消息锚点)
处理 GetNextNewMessage callback 里的 msg 时,可先生成锚点,后续即使消息因滚动、Recycler 重绘导致 runtimeid 变化或位置移动,仍可在当前视口内按锚点找回同一条并继续操作(下载、点击、转文字等)。
原理(与 GetNextNewMessage 内部一致):
runtimeid在重绘/切会话后会变,不要只靠GetMessageById(rid)长期追踪;应用MakeMessageAnchor+ResolveMessageByAnchor。
WinAuto 等价调用:auto.make_msg_anchor(msg) / auto.resolve_msg_by_anchor(anchor)。