Commit Graph
520 Commits
Author SHA1 Message Date
youpaishidifu a0e54805fd 修复QQ读不出/读旧数据/auto-reply错发平台
问题1: QQ读不出消息 — daemon线程SetForegroundWindow频繁失败
   -> _run_loop添加PeekMessage创建Windows消息队列
   -> _attach_set_foreground内部异常全部捕获,不抛给调用者

问题2: QQ读旧剪贴板数据 — PostMessage键盘 Electron不响应
   -> 移除前台跳过检查(降频已足够,20s一次不频繁)
   -> _click_message_area PostMessage->SendMessage(Electron响应同步消息)
   -> 移除_force_scroll_bottom(PostMessage对Electron无效)

问题3: WeChat消息错发给QQ — auto-reply daemon线程SetForegroundWindow失败
   -> auto_reply.on_kb_match不再直接调用_paste_and_send
   -> 改为get_reply_data返回{platform,answer,sender}给主线程
   -> gui.py添加_reply_queue + _flush_reply_queue(主线程after轮询)
   -> _execute_reply在主线程执行_search_contact和_paste_and_send
      (SetForegroundWindow从主线程调用永远可靠)
2026-07-25 13:06:36 +08:00
youpaishidifu 336347d577 修复QQ抢窗口(aacc)+自动回复错发平台
- 删除 _read_via_clipboard_quiet: PostMessage WM_KEYDOWN+ord('A')/'C'
  Electron不识别组合键,输入字面a/c. 废弃该方法
- QQ路径改用 _read_via_clipboard(SetForegroundWindow+SendKeys)
  SendKeys 用 keybd_event,正确模拟 Ctrl+A/C
- 加前台判定: QQ在前台时跳过读取,不抢用户焦点
- _attach_set_foreground 新方法: AttachThreadInput+SetForegroundWindow
  确保 daemon 线程(自动回复)也能正确激活目标窗口
- _search_contact / _paste_and_send / _read_via_clipboard
  全部改用 _attach_set_foreground,修复自动回复错发窗口
2026-07-25 12:31:43 +08:00
youpaishidifu 3c200afe4d 修复QQ抢焦点+微信漏消息
- QQ/TIM 改用静默剪贴板法: AttachThreadInput+PostMessage键盘Ctrl+A/C
  全程不调用SetForegroundWindow/SendKeys,不窃取用户焦点
- QQ轮询降频到每3周期一次(6s→18s),减少抢窗口
- _poll 改为全列表内容比对,逐一报告每条新消息
  旧行为只报texts[-1],中间插入的消息全部丢失
- 新增 _last_texts 存储完整文本列表用于比对
- 新增 _read_via_clipboard_quiet 方法
- 窗口最小化时跳过静默剪贴板(无法激活)
2026-07-25 11:54:46 +08:00
youpaishidifu 7111f84a6d 添加自动回复功能: KB匹配命中后发答案回对应消息窗口
- monitor.py: 添加原始剪贴板存储 + _parse_last_sender提取发送者
  + _search_contact搜索框定位联系人 + _paste_and_send粘贴发送
- auto_reply.py(新): AutoReply编排类,含防重复/阈值过滤/线程锁
- gui.py: UI添加自动回复开关+阈值滑块,搜索命中回调触发回复
- config.py: 添加auto_reply_enabled/auto_reply_min_score配置项
2026-07-25 11:01:02 +08:00
youpaishidifu 877a5b2afb TIM修复: 跳过UIA深度遍历(返回会话列表)+PostMessage点击不跳光标
- QQ/TIM 路径跳过 _collect_filtered_texts(UIA只暴露会话列表)
- _click_message_area 改为 PostMessage WM_LBUTTONDOWN/UP, 不移动物理鼠标
- 点击位置从 width*0.65 改为 width*0.88 (TIM三栏布局,最右是消息区)
2026-07-25 10:22:36 +08:00
youpaishidifu 4349b5c176 清理旧代码+修复TIM抓错搜索框
- 删除旧 _collect_all_texts(被 _collect_filtered_texts 替代)
- 删除 _read_message_list_deep(旧QQ路径,已废弃)
- 微信fallback改走 _collect_filtered_texts
- 添加 _click_message_area:剪贴板前先点击中右区域聚焦消息区
- TIM Electron 通过鼠标点击消息区再Ctrl+A→Ctrl+C
- 添加 win32api import(用于 SetCursorPos+mouse_event)
2026-07-24 23:34:20 +08:00
youpaishidifu 2f378f676f fix QQ消息读取: 跳过ListControl(UIA冻结)直接全窗深度遍历+Win32回退
- QQ NT TXGuiFoundation UIA树冻结,ListControl始终返回缓存数据
- QQ路径改为: 先force_scroll_bottom, 然后全窗深度遍历(max_depth=8)
- 添加Win32回退(EnumChildWindows+GetWindowText)绕过UIA
- QQ冻结检测更激进(stale=3刷新, stale=6重建引用)
- 微信改动: 标题栏点击(Win10/11安全)->非侵入式刷新
- .gitignore添加*.log
2026-07-24 23:10:45 +08:00
youpaishidifu 4be6ae37c7 fix: QQ单独走会话列表(消息列表UIA不更新)+微信保持消息列表优先 2026-07-24 22:49:37 +08:00
youpaishidifu c8c2f2ccc6 fix: 1)微信QQ统一优先读消息列表(当前对话) 2)知识库min_score=0.30+短文本过滤 2026-07-24 22:39:09 +08:00
youpaishidifu e0ea7ec80f fix: ScrollPattern滚到底部→强制UIA加载新消息;resize→PostMessage caption click兜底 2026-07-24 22:21:19 +08:00
youpaishidifu 9a27cbe9e8 fix: 全列表签名指纹→检测对话排序变化+ControlFromHandle绕过UIA缓存+冻结5轮resize强制刷新 2026-07-24 22:00:27 +08:00
youpaishidifu 93c4a049a9 fix: 微信改用会话列表(左)提取第二行+window.Refresh()强制刷新UIA 2026-07-24 21:43:50 +08:00
youpaishidifu 6be8093961 fix: QQ NT 窗口用类名 TXGuiFoundation 定位+账号名标题兜底 2026-07-24 21:35:53 +08:00
youpaishidifu c129edac6d fix: 不缓存ListControl每轮重查+灭comtypes洪水+4策略全路径日志 2026-07-24 21:18:23 +08:00
youpaishidifu 73e22e5066 fix: 改用 ListControl(Name="消息") 精确定位消息列表+4层兜底 2026-07-24 20:58:38 +08:00
youpaishidifu db31102a43 fix: 彻底重写消息抓取—深度4递归遍历右侧半区文本+UI树调试转储 2026-07-24 20:50:20 +08:00
youpaishidifu 2563077bbc fix: 右侧消息区域 30x 权重 + 连续空读强制重扫,修复缓存错选联系人列表 2026-07-24 20:31:44 +08:00
youpaishidifu 33cc692a3a fix: 缓存窗口+消息列表控件,限制递归深度,大幅降低消息延迟 2026-07-24 20:24:01 +08:00
youpaishidifu bdfc24a4c7 init: 消息问答助手 — 微信/QQ监控 + 本地知识库搜索 + GUI 2026-07-24 19:36:14 +08:00
youpaishidifu 552c2cb0c5 Initial commit 2026-07-24 18:57:34 +08:00