【问题标题】:Changing focus with Autohotkey, what is going on?用 Autohotkey 改变焦点,这是怎么回事?
【发布时间】:2016-03-15 03:12:29
【问题描述】:

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

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

导致不一致的原因是什么?

【问题讨论】:

    标签: windows-10 autohotkey


    【解决方案1】:

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

    将尝试六次激活目标窗口 60ms 的过程。因此,通常不需要遵循 WinActivate 使用 WinWaitActive 或 IfWinNotActive。

    通常您可以尝试将 #WinActivateForce 指令与 WinWaitActiveIfWinNotActive 结合使用。

    有时您可以使用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 的一个很好的完整实现,它试图激活一个窗口。

    【讨论】:

      【解决方案2】:

      分号在 AHK 中引入 cmets。前面必须有一个空格,否则会被视为字符串的一部分(别名 winactivate "Calculator;")

      所以,使用

      WinActivate, Calculator ;
      

      或者只是省略;,因为它没有任何贡献

      【讨论】:

        猜你喜欢
        • 2018-08-17
        • 2011-07-06
        • 2013-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多