我想制作一个简单的脚本,当我按住鼠标右键时,鼠标会自动释放并按下鼠标右键。但我遇到了一个棘手的问题。
Lua代码:
function OnEvent(event, arg)
OutputLogMessage("Event: "..event.." Arg: "..arg.."n")
repeat
ReleaseMouseButton(3)
OutputLogMessage("RELEASED.n")
Sleep(300)
rbPressed = IsMouseButtonPressed(3)
PrintBool(rbPressed)
--PressMouseButton(3)
OutputLogMessage("PRESSED.n")
until not rbPressed
end
当我如上所述注释掉PressMouseButton(3)
时,按下鼠标右键足够的时间(>300ms(并释放按钮,我得到以下日志:
事件:MOUSE_BUTTON_PRESSED Arg:2
RELEASED
真
按下
已发布
真
按下
已发布
错误
按下
事件:MOUSE_BUTTON_RELEASED参数:2
已释放
错误
按下。
正如您所看到的,释放后的rbPressed
是True
,这似乎是物理鼠标按钮的状态,而不是模拟的释放动作。然而,rbPressed
与PressMouseButton(3)
线一起变为False
。日志:
事件:MOUSE_BUTTON_PRESSED Arg:2
RELEASED
错误
按下
事件:MOUSE_BUTTON_RELEASED参数:2
已释放
错误
按下。
这怎么可能?由于PressMouseButton(3)
线在IsMouseButtonPressed(3)
线之后,因此不应影响rbPressed
的FIRST输出。
正如您所看到的,发布后的rbPressed为True,这似乎是物理鼠标按钮的状态,而不是模拟的发布操作。
IsMouseButtonPressed
返回模拟按钮,而不是物理按钮。
已忽略ReleaseMouseButton(3)
,因为以前未调用PressMouseButton(3)
有一个内部计数器,PressMouseButton
增加,ReleaseMouseButton
减少
当计数器=0时,ReleaseMouseButton
将被忽略。