我运行一个应用程序,在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如果是真的。
提前致谢。
答案 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)
一旦您能够使用:
触发AutoHotKeyRButton::
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)。
警告我还没有测试过这段代码!