在LButton之后延迟RButton

时间:2013-03-04 05:15:57

标签: autohotkey

我运行一个应用程序,在LButton之后删除过早的RButton。解决方案可能是运行

之类的东西
~LButton::                    ; pass through, set A_PriorHotkey
return

#If A_PriorHotkey = LButton && A_TimeSincePriorHotkey < minDelay
RButton:: 

但是我没有运气写下最后一行和跟随行,所以如果#IF为假或延迟大约100ms,则发送正常的MButton down和RButton up然后发送RButton并且如果#为RButton up如果是真的。

提前致谢。

2 个答案:

答案 0 :(得分:1)

这是一个应该工作的解决方案,我测试了一下,它应该100%的时间工作。 如果您使用它,请不要只是复制和粘贴,但尝试了解代码的作用。

基本上我们做的是左键单击我们的时间,直到我们达到一定的时间(在这种情况下1000毫秒 - > IGNORE_TIME),同时我们忽略右键单击,当时间到时右键单击再次激活。

global IGNORE_TIME := 1000  ; ignore for 1000 miliseconds, change only this if you wan't different times
global starttime := 0


~LButton::
    SetTimer, DelayRButton_r ,Off
    starttime := 25
    SetTimer, DelayRButton_r ,25
    tooltip,leftbutton    ; debug
return


RButton::
    if(starttime > 0)    ; if the left button was pressed IGNORE_TIME ago or less ignore right click
        return
    Send, {RButton}    ; else send right click
    tooltip,rightbutton    ; debug
return


DelayRButton_r:    ; this function runs every 25 ms until it reaches IGNORE_TIME then if sets starttime to 0 and rightclick works again
    starttime += 25
    if( starttime > IGNORE_TIME)
    {
        SetTimer,DelayRButton_r, Off
        starttime := 0
    }
return

另请注意,可以轻松编辑此代码,使其仅适用于特定的应用程序/窗口。

答案 1 :(得分:0)

根据您的描述,我假设您无法更改发送应用程序(即不是AutoHotKey脚本,但可能是已编译的ahk.exe)

一旦您能够使用:

触发AutoHotKey
RButton::
    SoundBeep, 500,500
Return  

您可以尝试以下代码:

SetTitleMatchMode = 2

#IfWinActive, Name of your Application
    $RButton::
       if (A_PriorHotkey = "LButton" AND A_TimeSincePriorHotkey < 400)
          Sleep, 1000
       Click, Right
    Return
#IfWinActive

通过右键单击AutoHotKey图标,然后启动Windows Spy,您可以找到(发送或接收应用程序的名称,取决于当时哪个应用程序处于活动状态)。在Windows Spy处于活动状态时,单击该应用程序并查看应用程序的标题(或ahk_class)。

警告我还没有测试过这段代码!