SikuliX 2.0.5如何检测鼠标指针是空闲还是忙碌状态?
在SikuliX 2.0.5中检测鼠标指针状态的可行方案
方案1:基于图像识别检测忙碌指针
既然你明确点击后鼠标会变为忙碌状态(如沙漏/转圈图标),可以直接用SikuliX的图像匹配功能判断指针状态:
- 提前截取忙碌状态的鼠标指针图像(命名为
busy_cursor.png) - 在循环中检测该图像是否存在,以此区分空闲/忙碌状态
修改你的逻辑代码如下:
# 预先准备好忙碌指针的图像 busy_cursor = "busy_cursor.png" is_idle = True while is_idle: click("1733637249299.png") mouseMove(1, 0) # 快速检测是否出现忙碌指针,超时0.1秒 busy_match = exists(busy_cursor, 0.1) is_idle = busy_match is None # 未匹配到忙碌指针则判定为空闲 wait(0.3)
方案2:调用Java AWT API获取指针类型
SikuliX基于Java,可直接调用java.awt包的API获取指针状态,无需额外导入win32gui:
from java.awt import MouseInfo, Cursor def is_mouse_idle(): current_cursor = MouseInfo.getPointerInfo().getCursor() # 空闲状态对应DEFAULT_CURSOR,忙碌状态对应WAIT_CURSOR return current_cursor.getType() == Cursor.DEFAULT_CURSOR while is_mouse_idle(): click("1733637249299.png") mouseMove(1, 0) wait(0.3)
注意事项
- 方案2中,不同系统的Cursor类型ID有差异,Windows下
WAIT_CURSOR值为3,DEFAULT_CURSOR值为0,可通过print(current_cursor.getType())打印当前状态ID确认 - 如果Java Applet使用自定义指针导致AWT无法识别,优先选择方案1的图像识别,兼容性更可靠
内容的提问来源于stack exchange,提问作者user3103982
相关产品推荐
相关产品推荐

