自动热键:Gui提交后,ControlClick上出现奇怪的行为

时间:2017-03-30 09:06:34

标签: autohotkey

我有以下脚本将ControlClick + ControlSend发送到后台窗口(而我在另一个窗口中工作)。它按预期工作正常。

SetTitleMatchMode 2

$F1::
sleep 1000

ControlClick, x400 y470, Notepad
ControlSend,, text, Notepad

return

问题是:当我在脚本上添加一个Gui时,一旦我关闭Gui(使用Submit或Destroy),ControlClick行为就会变得奇怪:如果我在窗口A(例如Chrome)中工作ControlClick不再在后台工作:它会激活窗口B(记事本),就像在WinActivate命令中一样。

这里是带有问题的脚本(与前一个相同,但只有一个简单的Gui):

SetTitleMatchMode 2

Gui, Add, Text,, box
Gui, Add, Button, default, OK
Gui, Show, W300 H300
return

GuiClose:
ButtonOK:
Gui, Submit
return


$F1::
sleep 1000

ControlClick, x400 y470, Notepad
ControlSend,, text, Notepad

return

我在Windows Vista 32位,Autohotkey v1.1.25.01

我无法理解为什么Gui Submit正在改变ControlClick行为。我如何解决这个问题,让ControlClick在后台运行,就像没有Gui Submit / Destroy一样?

ps:两个窗​​口都被最大化了。

1 个答案:

答案 0 :(得分:1)

已知ControlClick在某些情况下不是非常可靠。看一下Reliability section in the ControlClick documentation,您可以尝试一些事项:

  

提高可靠性 - 尤其是在用户使用时   在ControlClick期间物理移动鼠标 - 一个或两个   以下内容可能有所帮助:

     
      
  1. 在ControlClick之前使用SetControlDelay -1。这避免了持有   点击期间鼠标按钮按下,这反过来减少   来自用户的鼠标物理移动的干扰。

  2.   
  3. 在第六个参数(选项)中的任意位置指定字符串NA   如下所示:

    SetControlDelay -1  
    ControlClick, Toolbar321, WinTitle,,,, NA
    
  4.         

    NA避免将目标窗口标记为活动并避免   将其输入处理与脚本的输入处理合并,这可能是   防止鼠标的物理运动干扰(但通常   仅当目标窗口未激活时)。但是,这种方法可能会   不适用于所有类型的窗户和控件。