Windows 10 使用自动热键更改焦点,发生了什么?

Windows 10 使用自动热键更改焦点,发生了什么?,windows-10,autohotkey,Windows 10,Autohotkey,我只想让我的脚本选择正确的窗口来输入按键。为此,我想我使用WinActivate。我在他们的网站上运行了这个示例,但在Windows10中发现了一些奇怪的结果 IfWinExist, Untitled - Notepad WinActivate ; use the window found above else WinActivate, Calculator; 如果将记事本最小化,它将获得焦点 如果记事本打开但没有焦点,即另一个窗口位于其上方,记事本将获得焦点 如果记事本没有打

我只想让我的脚本选择正确的窗口来输入按键。为此,我想我使用WinActivate。我在他们的网站上运行了这个示例,但在Windows10中发现了一些奇怪的结果

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

这是因为在该语言上实现了WinActivate函数。WinActivate尝试打开窗口,但可能无法打开。 从

将进行六次尝试,以激活屏幕上的目标窗口 60毫秒的课程。因此,通常不需要遵循WinActivate 使用WinWaitActive或IfWinNotActive

通常,您可以尝试将WinActivateForce指令与WinWaitActive或IfWinNotActive结合使用

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

另外,尝试使用WinRestore还原窗口也很有用

我使用的是Win7,但上面的方法对我有效


下面是一个尝试激活窗口的函数的良好完整实现的示例。

分号在AHK中引入注释。它前面必须有一个空格,否则它将被视为字符串别名winactivate计算器的一部分

所以,使用

WinActivate, Calculator ;
或者省略;,因为它没有任何贡献

WinActivate, Calculator ;