Files
wechat_crawler/test_com_fix.py

115 lines
3.2 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
"""
测试COM组件初始化修复
用于验证打包后的程序是否能正常工作
"""
import sys
import threading
import time
def test_com_in_thread():
"""在线程中测试COM初始化"""
print("\n[线程测试] 开始...")
try:
import pythoncom
print("[线程测试] ✓ pythoncom模块导入成功")
except ImportError as e:
print(f"[线程测试] × pythoncom模块导入失败: {e}")
print("请运行: pip install pywin32")
return False
try:
# 初始化COM
pythoncom.CoInitialize()
print("[线程测试] ✓ COM组件初始化成功")
# 尝试使用wxauto
try:
from wxauto import WeChat
print("[线程测试] ✓ wxauto模块导入成功")
# 注意:这里不实际连接微信,只测试导入
print("[线程测试] ✓ 所有测试通过")
result = True
except Exception as e:
print(f"[线程测试] × wxauto测试失败: {e}")
result = False
# 清理COM
pythoncom.CoUninitialize()
print("[线程测试] ✓ COM组件清理成功")
return result
except Exception as e:
print(f"[线程测试] × COM初始化失败: {e}")
return False
def main():
print("=" * 60)
print("COM组件修复验证测试")
print("=" * 60)
# 测试1主线程导入
print("\n[测试1] 主线程模块导入...")
try:
import pythoncom
print("✓ pythoncom导入成功")
except ImportError as e:
print(f"× pythoncom导入失败: {e}")
print("\n请先安装pywin32:")
print(" pip install pywin32")
return
try:
from wxauto import WeChat
print("✓ wxauto导入成功")
except ImportError as e:
print(f"× wxauto导入失败: {e}")
print("\n请先安装wxauto:")
print(" pip install -e .")
return
# 测试2工作线程中的COM初始化
print("\n[测试2] 工作线程COM初始化...")
thread = threading.Thread(target=test_com_in_thread)
thread.start()
thread.join()
# 测试3检查打包相关模块
print("\n[测试3] 检查打包相关模块...")
modules_to_check = [
'pywintypes',
'win32com',
'win32api',
'win32con',
'win32gui',
]
all_ok = True
for module_name in modules_to_check:
try:
__import__(module_name)
print(f"{module_name}")
except ImportError:
print(f"× {module_name} (可选)")
# 总结
print("\n" + "=" * 60)
print("测试完成")
print("=" * 60)
print("\n如果所有测试都通过,说明修复成功,可以进行打包。")
print("打包命令:")
print(" 方式1: 双击 修复并重新打包.bat")
print(" 方式2: 双击 build.bat")
print(" 方式3: pyinstaller build_exe.spec")
print("\n打包后请测试exe文件确保能正常连接微信。")
if __name__ == "__main__":
main()
input("\n按回车键退出...")