# -*- coding: utf-8 -*-
"""
在不显示窗口的情况下搜索联系人

待解决的问题：不在最小化窗口界面上的联系人需要进行搜索，不能实现的是聚焦必须要在前台
"""

import time
import win32gui
import win32con

# 启用后台模式
import wxautoz.ui.base as base
base.WXAUTO_BACKGROUND_MODE = True


# 启用调试日志
from wxautoz.logger import wxlog
wxlog.set_debug(True)

from wxautoz import WeChat
wx = WeChat()

# 隐藏窗口
hwnd = wx.core.control.NativeWindowHandle
win32gui.ShowWindow(hwnd, win32con.SW_HIDE)


# 配置参数
target = "文件传输助手"
print("\n" + "=" * 80)
print(f" 搜索联系人: '{target}'")
print("=" * 80)

try:
    # 记录窗口初始状态
    is_visible_before = win32gui.IsWindowVisible(hwnd)
    is_iconic_before = win32gui.IsIconic(hwnd)
    result = wx.ChatWith(target)
    print(f"切换结果: {result if result else '(失败)'}")

    # 等待切换完成
    time.sleep(2)

    # 确保窗口仍然隐藏
    win32gui.ShowWindow(hwnd, win32con.SW_HIDE)

    chat_info = wx.core.chatbox.get_info()
    current_chat = chat_info.get('chat_name', '未知')

    if current_chat == target:

        # 获取聊天记录
        all_msgs = wx.GetAllMessage()
        msgs = all_msgs[-10:] if len(all_msgs) >= 10 else all_msgs  # 只取最后10条
        # msgs = all_msgs  # 获取所有消息

        # 过滤掉时间消息
        real_msgs = [msg for msg in msgs if msg.attr != 'time']
        # print(f"✓ 获取到 {len(real_msgs)} 条最近消息")
        for i, msg in enumerate(real_msgs, 1):
            if msg.type == 'file':
                print(f"  [{i}] {msg.sender}: {msg.type} - 文件名: {msg.filename}, 大小: {msg.filesize}")
            # else:
                # print(f"  [{i}] {msg.sender}: {msg.type}")
    else:
        print(f"\n✗ 失败！当前聊天是 '{current_chat}'，不是 '{target}'")

except Exception as e:
    print(f"\n✗ 错误: {e}")
    import traceback
    traceback.print_exc()



