单线与多线发送

时间:2017-05-09 20:11:14

标签: autohotkey

我面临一个关于Send命令如何工作的一个非常奇怪的问题。

这是我的脚本,它将模拟Control-Click。 (对于禁用Control-Click的站点。)

#IfWinActive, ahk_exe chrome.exe
SetKeyDelay, 2000 ; Just for testing. In future, here should be something more fast and reliable
^LButton::
    GetKeyState, state, CapsLock, T
    if state = D
    {
        Send, {Click Right}
        Send, {Down}
        Send, {Enter}
    }
return
#IfWinActive

这个脚本远不是最终版本,它很慢,它不是很可靠,但一般来说,它的工作原理。例如,您可以在StackOverflow的主页上测试它。

但如果我将所有发送命令放在单行上,那就是:

#IfWinActive, ahk_exe chrome.exe
SetKeyDelay, 2000
^LButton::
    GetKeyState, state, CapsLock, T
    if state = D
        Send, {Click Right}{Down}{Enter}
return
#IfWinActive

然后" Down"按键有时会滚动页面,而不是选择菜单项("在新标签中打开链接")。

为什么会这样?它是如何修复的?

1 个答案:

答案 0 :(得分:1)

也许

  1. {Click Right}并未被视为按键,并且不受SetKeyDelay的影响。
  2. {Click Right}并未精确点击链接
  3. {Click Right}正在页面准备好之前执行
  4. 无论如何,您应该能够将Send, {Click Right}{Down}{Enter}替换为:

    MouseClick Middle
    

    这告诉chrome在新标签页中打开一个链接