add 硬件控制模块 (hardware_control.py) 并修复游戏状态扫描区域宽度
- 新增 wyhkm.dll 硬件盒子 COM 接口封装,支持键盘鼠标控制 - 修复 game_state_config.json 中 scan_region_width 过小导致截图越界的问题 - 添加鼠标路径录制器、硬件测试脚本等工具 - 更新多项配置默认值 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
62
test_hw.py
Normal file
62
test_hw.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import sys
|
||||
import os
|
||||
import ctypes
|
||||
from ctypes import *
|
||||
import win32com.client
|
||||
import time
|
||||
|
||||
# 路径配置
|
||||
dll_path = os.path.abspath("ddl/wyhkm.dll")
|
||||
print(f"测试 DLL: {dll_path}")
|
||||
|
||||
# 1. 注册并创建对象
|
||||
try:
|
||||
hkmdll = windll.LoadLibrary(dll_path)
|
||||
hkmdll.DllInstall.argtypes = (c_long, c_longlong)
|
||||
if hkmdll.DllInstall(1, 2) < 0:
|
||||
print("注册失败!")
|
||||
sys.exit(0)
|
||||
|
||||
wyhkm = win32com.client.Dispatch("wyp.hkm")
|
||||
print(f"硬件对象已创建,版本: {hex(wyhkm.GetVersion())}")
|
||||
except Exception as e:
|
||||
print(f"初始化异常: {e}")
|
||||
sys.exit(0)
|
||||
|
||||
# 2. 打开设备并配置模式 (使用已验证的 Index 0)
|
||||
dev_id = wyhkm.SearchDevice(0x2612, 0x1701, 0)
|
||||
if dev_id == -1 or not wyhkm.Open(dev_id, 0):
|
||||
print("无法打开硬件设备")
|
||||
sys.exit(0)
|
||||
|
||||
# 关键模式设置
|
||||
wyhkm.SetMode(1, 1) # 键盘增强模式
|
||||
wyhkm.SetMode(2, 1) # 鼠标仿真模式
|
||||
wyhkm.SetKeyInterval(30, 50) # 设置合理的按键间隔
|
||||
|
||||
print(f"\n--- 硬件就绪 (ID: {dev_id}) ---")
|
||||
print("请在 5 秒内切换到记事本进行按键测试...")
|
||||
time.sleep(5)
|
||||
|
||||
# 3. 常用按键序列测试
|
||||
test_keys = [
|
||||
("方向键", ["W", "A", "S", "D"]),
|
||||
("功能键", ["SPACE", "X", "B", "M", "TAB", "ESCAPE"]),
|
||||
("数字键", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]),
|
||||
("组合键测试", ["CTRL+C", "ALT+Z"])
|
||||
]
|
||||
|
||||
for category, keys in test_keys:
|
||||
print(f"\n正在测试 {category}: {keys}")
|
||||
for k in keys:
|
||||
print(f" 发送按键: {k}")
|
||||
wyhkm.KeyPress(k)
|
||||
time.sleep(0.5)
|
||||
|
||||
# 4. 鼠标同步测试
|
||||
print("\n正在测试鼠标移动 (MoveR 100, 100)...")
|
||||
wyhkm.MoveR(100, 100)
|
||||
|
||||
time.sleep(1)
|
||||
wyhkm.Close()
|
||||
print("\n所有常用按键测试完成!")
|
||||
Reference in New Issue
Block a user