youpaishidifu
|
3f76bcb7e1
|
OCR左边界40%→33%继续左移避开自身消息\n\n- cap_left 从 0.40 降到 0.33,幅度更大\n- 目标:只捕获左侧他人消息区域
|
2026-07-26 12:05:33 +08:00 |
|
youpaishidifu
|
ac833664ab
|
OCR截屏前切QQ前台+左边界调到40%
- 截屏前调用 _ensure_foreground 确保 QQ 在最前,避免 CMD 窗口遮挡截入 OCR
- cap_left 从 45% → 40%,进一步左移捕获消息正文
|
2026-07-26 11:58:49 +08:00 |
|
youpaishidifu
|
d07cb59cff
|
OCR裁剪左边界从55%调到45%捕获消息正文而非时间戳
- cap_left 从 55% → 45%,消息文字在消息面板左侧
- 右边界保持 95%,裁剪宽度从 40% 增至 50%
- 注释更新说明
|
2026-07-26 11:31:29 +08:00 |
|
youpaishidifu
|
f0b221f570
|
OCR截屏保存到根目录用于调试排错
- OCR截取后立即保存图片到程序根目录 (ocr_debug_时间戳.png)
- 自动清理旧文件,仅保留最近20张
- 防止截错区域无法肉眼核实
|
2026-07-26 11:21:20 +08:00 |
|
youpaishidifu
|
acbadb95a7
|
修复重复处理:加模糊匹配去重兜底
OCR输出每次微小差异(勖彐碎片/行首数字/尾部截断)导致精确去重永远命中不了。
新增 _fuzzy_duplicate 用 difflib.SequenceMatcher.quick_ratio 做相似度去重(阈值0.72),
长度差距>40%直接跳过(quick_ratio上界<阈值)。精确匹配+模糊匹配双重兜底。
|
2026-07-26 00:45:15 +08:00 |
|
youpaishidifu
|
3da156b916
|
修复: 删除已移除方法 _read_via_clipboard 的残留调用
|
2026-07-26 00:25:56 +08:00 |
|
youpaishidifu
|
bb85dbdfb1
|
修复重复处理:OCR去噪 + 剪贴板/读取前台唤醒增强
1. OCR去噪:去掉行首未读红点数字(0)和行尾删除按钮误识别(勖彐),
同一消息OCR输出稳定,精确去重得以命中,不再重复触发回复
2. 剪贴板垃圾过滤:复用_is_ocr_console_garbage丢弃终端/Python内容,
解决剪贴板误读控制台输出当消息的问题
3. _ensure_foreground新增AllowSetForegroundWindow(-1),
读取路径前台唤醒与发送路径一致,减少误复制
|
2026-07-26 00:12:25 +08:00 |
|
youpaishidifu
|
f90e3fbaaf
|
OCR 终极防御:进程验证+最小化检测+垃圾内容过滤
QQ 被杀/最小化后 OCR 截到终端窗口导致死循环回复。
三重防御:
1. _validate_qq_window() — IsWindowVisible+IsIconic+进程名(QT/TIM.exe)验证
2. _is_ocr_console_garbage() — 内容级检测:Python模块名/脚本路径/日志关键词/无中文长文本
3. 连续3次无效自动清缓存清PID防死循环
新增 _cached_pid 字典,与 _cached_hwnd 同步生命周期
|
2026-07-25 23:30:37 +08:00 |
|
youpaishidifu
|
85b790cb81
|
修QQ:raw_lines作用域bug+UIA优先生成窗口+剪贴板行数检测
|
2026-07-25 21:39:23 +08:00 |
|
youpaishidifu
|
3da88da267
|
补完QQ实时消息:修force_scroll_bottom传参+前台retries=5+UIA兜底前刷新
|
2026-07-25 20:09:24 +08:00 |
|
youpaishidifu
|
0a8c861603
|
修TIM剪贴板死循环:_replied_texts永久集+UIA优先+剪贴板行预过滤
|
2026-07-25 18:19:16 +08:00 |
|
youpaishidifu
|
a4b6f05a80
|
修QQ只读历史消息:剪贴板优先+安全键盘导航Enter+Ctrl+End+前景守卫
|
2026-07-25 17:38:28 +08:00 |
|
youpaishidifu
|
9cd1e607aa
|
修TIM全局keybd_event误杀:删Esc键盘导航+PostMessage替代+恢复UIA多层读取
|
2026-07-25 17:21:16 +08:00 |
|
youpaishidifu
|
7529825357
|
修QQ读不到消息:恢复键盘导航Esc→Esc→Enter不切会话
|
2026-07-25 17:09:19 +08:00 |
|
youpaishidifu
|
0927603fc3
|
修死循环:全局去重+取消QQ键盘导航切会话+过滤系统消息
|
2026-07-25 16:58:09 +08:00 |
|
youpaishidifu
|
6a96111db6
|
修复QQ读不到消息+微信前台判定失败(窗口在前台仍报错)\n\n问题1: QQ(TIM)读不到消息\n 根因: _focus_message_area在窗口未前置前SendKeys({Esc})发给错误窗口\n 然后_read_via_clipboard_once只用{Esc}未能聚焦消息显示区\n TIM中{Esc}只退出搜索到会话列表,非消息区域\n 修复: 删_focus_message_area(整个方法窗口未前置时无意义)\n _read_via_clipboard_once中TIM路径改为:\n {Esc}{Esc}退出搜索→{Down}选中对话→{Enter}打开(加载消息区)\n 此时Ctrl+A选中消息内容而非会话列表\n\n问题2: 微信已前置仍报目标窗口不在前台\n 根因: _cached_hwnd存储UIA NativeWindowHandle(可能是子窗口句柄)\n 而GetForegroundWindow()返回顶层窗口句柄→hwnd不匹配\n 修复: _ensure_hwnd存储时加GetAncestor(hwnd,GA_ROOT)确保存顶层句柄\n _ensure_foreground改用root_hwnd判断\n 加SwitchToThisWindow fallback(权限要求比SetForegroundWindow低)\n \n其他: .gitignore加tim_dump.txt
|
2026-07-25 15:02:26 +08:00 |
|
youpaishidifu
|
0322e2af64
|
修复QQ抓联系人列表+微信自动回复错发给QQ+重复处理\n\n问题1: QQ/TIM抓会话列表而非消息\n 根因: _click_message_area单次点击(width*0.88)落在联系人/群列表\n 而非消息显示区,导致Ctrl+A复制联系人名而非消息内容\n 修复: _focus_message_area两次SendMessage点击\n 先点会话列表(左15%)选对话→再点消息区(中右60%)聚焦消息\n + Esc前导键退出搜索模式\n\n问题2: 微信自动回复发给QQ\n 根因: _attach_set_foreground静默失败不返回结果\n SendKeys输入到当前前台窗口(QQ)\n 修复: _ensure_foreground使用GetForegroundWindow验证\n 确认目标窗口真正在前台,失败则return False放弃发送\n + 处理托盘/最小化窗口(ShowWindow SW_SHOWNORMAL)\n\n问题3: 重复处理同1条消息\n 根因: QQ每次读到不同联系人名=不同新消息=反复触发\n 修复: ①聚焦消息区后读到稳定消息内容 ②_sending_event锁\n 自动回复发送期间阻止监控轮询,避免焦点被抢\n\n其他: _ensure_hwnd检测QQ NT vs TIM变体\n 用于选择UIA优先或剪贴板优先策略
|
2026-07-25 14:37:54 +08:00 |
|
youpaishidifu
|
cb170d1160
|
修复知识库短查询不匹配+QQ消息抓不到
问题1: 你叫啥名字→分词["你","叫","啥","名字"]
→ len(t)>=2过滤只剩["名字"]→len(tokens)<=1直接返回空
修复: 放宽过滤 len(tokens)<=1→len(tokens)==0且len>=2
添加子串匹配回退: TF-IDF无结果时检查查询是否包含在文档中
问题2: QQ消息抓不到
_read_via_clipboard 加重试机制(首次空自动重试1次)
_read_win32_texts 降低文本长度过滤 4→2 字
QQ路径加 _click_message_area 确保焦点在消息区
|
2026-07-25 13:56:09 +08:00 |
|
youpaishidifu
|
95b4c8a136
|
修复PeekMessage找不到+线程未启动就join导致程序崩溃\n\n问题1: ctypes.windll.user32.PeekMessage 在64位Windows上\n 函数名为PeekMessageW(A/W后缀必须带),PeekMessage找不到\n 且消息队列应在daemon线程(调用SetForegroundWindow的线程)创建\n 而非主线程. 移到_run_loop内+改PeekMessageW\n\n问题2: start()在PeekMessage崩溃,self._thread未.start()\n stop()调join()→RuntimeError: cannot join thread before started\n 窗口无法关闭,必须Ctrl+C强杀\n 修复: stop()加is_alive()判断再join
|
2026-07-25 13:21:23 +08:00 |
|
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 |
|