用Autohotkey改变焦点,发生了什么?

时间:2016-03-13 22:39:47

标签: windows-10 autohotkey

我只是希望我的脚本选择正确的窗口来输入关键鹳。要做到这一点,我想我使用WinActivate。我从他们的网站上运行了这个例子,但在Windows 10中发现了一些奇怪的结果

IfWinExist, Untitled - Notepad
    WinActivate ; use the window found above
else
    WinActivate, Calculator;
  1. 如果记事本最小化,则会获得焦点
  2. 如果记事本已打开但没有焦点(即另一个窗口位于其上方),记事本将获得焦点
  3. 如果记事本未打开且计算器已最小化,由于某些奇怪的原因,它无法获得焦点。
  4. 如果记事本未打开且计算器已打开但没有焦点,则会获得焦点。
  5. 导致不一致的原因是什么?

2 个答案:

答案 0 :(得分:1)

分号在AHK中引入评论。在它之前必须有一个空格,否则它被视为字符串的一部分(别名winactivate"计算器;")

所以,使用

WinActivate, Calculator ;

或只是忽略;,因为它没有贡献任何东西

答案 1 :(得分:0)

这是因为在语言上实现了 WinActivate 功能。 WinActivate 尝试打开一个窗口,但可能无法打开。 来自documentation

  

将尝试六次激活目标窗口   当然是60ms。因此,通常不必遵循WinActivate   使用WinWaitActive或IfWinNotActive。

通常,您可以将 #WinActivateForce 指令与 WinWaitActive IfWinNotActive 结合使用。

有时您可以使用ahk_exe参数来匹配窗口。它可能适用于窗口标题没有的情况。在这种情况下,您将使用

尝试使用 WinRestore 恢复窗口也很有用。

SetTitleMatchMode, 2
IfWinExist, Bloco de notas
{
    WinActivate ; use the window found above
}
else
{
    WinRestore, ahk_exe calc.exe    
    WinActivate, ahk_exe calc.exe
}

我在Win7上,但上面对我有用。

以下是试图激活窗口的函数的完整实现的example