【问题标题】:Solution to AHK sending too many events when holding down a mouse button?AHK在按住鼠标按钮时发送太多事件的解决方案?
【发布时间】:2017-09-13 10:09:27
【问题描述】:

当使用三种不同的按住鼠标左键的方法时:

Mouseclick, left, 0, 0, 1, , D, R

Send {LButton down}

Click down

我正在制作宏的游戏让我退出并抱怨我发送了太多操作。我将其作为脚本单独测试,例如:

F3::
    Click down
    return

因此,其他代码不可能导致它。

我想知道是否可以使用任何设置(我的意思是CoordMode, Mouse, Screen)或任何其他解决方案,以防止发送 AHK 用于模拟按住鼠标按钮的任何快速事件。我可以尝试任何可能的解决方法吗?我愿意测试任何想法。

【问题讨论】:

  • 尝试设置速度(您在MouseClick 中留空的参数)并尝试不同的SendMode
  • @Oleg 好的,用Mouseclick, left, 100, 100, 1, 50, D Send {LButton down} SendEvent {LButton down} SendEvent {Click 200, 200, down} Click down 测试了SendMode InputSendMode Play,但每次都遇到同样的问题。这一定与游戏不喜欢 AHK 从根本上如何通过按住按键发送输入有关。
  • Autohotkey 不适用于某些游戏,请查看以下帖子了解更多您可以尝试的内容:autohotkey.com/boards/viewtopic.php?t=11084

标签: autohotkey


【解决方案1】:

好吧,你可以像这样介绍Sleep

LButton::
while (GetKeyState("LButton", "P"))
{
    MouseClick, left
    Sleep, 100
}
return

虽然我个人不喜欢通过相同的鼠标点击将鼠标点击绑定到行为,因为它会导致难以摆脱的结果。

这是一个带有可切换热键的示例。

Insert::
SendInput, {LButton Down}
loop
{
    Sleep, 100
    if getkeystate("Insert", "p") ; Hold for a second as the Sleep will delay recognition.
    {
        SendInput, {LButton Up}            
        break
    }
}
return

根据 cmets 编辑:

Insert::
SendInput, {LButton Down}
KeyWait, Insert, D
SendInput, {LButton Up}
return

【讨论】:

  • 有没有办法做到这一点而不点击?因为点击是我试图避免的。
  • @Viziionary 第二个示例在您按下 Insert 后开始单击,一直持续到再次按下为止。任何键或键组合都可以完成相同的操作。
  • 是的,这个解决方案发送点击事件,而不是按住 LMB。问题是关于按住鼠标按钮,而不是点击。
  • @Viziionary Gotcha。我根据点击示例和“太多操作”误解了帖子。我已经用按钮向下/向上的示例编辑了答案。
猜你喜欢
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多