【问题标题】:WinActivate not working in autohotkey scriptWinActivate 在自动热键脚本中不起作用
【发布时间】:2015-02-25 12:59:45
【问题描述】:

我有以下 AutoHotKey 脚本来帮助我使用快捷方式在不同打开的应用程序之间切换:

^!c::ToggleWindow("Chrome")
^!p::ToggleWindow("PowerShell")


ToggleWindow(TheWindowTitle)
{
    SetTitleMatchMode,2
    DetectHiddenWindows, Off
    IfWinActive, %TheWindowTitle%
    {
        WinMinimize, %TheWindowTitle%
    }
    Else
    {
        IfWinExist, %TheWindowTitle%
        {
            WinActivate
            ;;; Tried using WinMaximize/WinRestore here but same result
        }
        Else
        {
            DetectHiddenWindows, On
            IfWinExist, %TheWindowTitle%
            {
                WinShow
                WinActivate
            }
        }
    }
}

问题在于,对于某些应用程序,它只能在某些时候工作(例如,PowerShell 和 TortoiseHG Workbench),这真的很令人沮丧。对于其他应用程序(Chrome、Thunderbird),它始终有效。

这是我目前发现的:

  • 如果您明确最小化“有问题的”应用程序,则您永远无法使用 AHK 快捷方式激活/最大化窗口。我不确定是否有其他情况会阻止快捷方式工作,但这是复制问题的一种特定方式(至少对我而言)。

  • 即使在快捷方式不起作用的情况下,我也可以看到任务栏中的目标应用程序图标被突出显示。我猜它工作到了一半,激活了窗口但实际上并没有显示它。

  • 我认为问题不仅限于 AutoHotKey,因为我可以仅使用任务管理器复制此行为。如果我转到“应用程序”选项卡,右键单击目标应用程序并选择“放在前面”,同样的事情也会发生。但是,如果我选择“切换到”,它会起作用!

所以,我想我的问题是“任务管理器->应用程序->切换到”到底是做什么的,是否有可以在 AHK 中使用的等效项。我的操作系统是 Win7。

【问题讨论】:

  • 您的代码在我的 PowerShell(Windows 8 64 位)上运行良好,我想知道那里有什么问题。
  • 您是否以管理员身份运行 PowerShell,但以普通用户身份运行 AutoHotkey?当我这样做时(在 Windows 7 64 位机器上),我无法恢复最小化的 PowerShell 窗口。
  • 以管理员身份运行 AutoHotkey 解决了以管理员身份运行的 PowerShell 窗口恢复/最小化的问题。
  • 是的!就是这样!我以管理员身份运行 PowerShell 并以管理员身份运行 AHK 也解决了这个问题。谢谢!

标签: windows-7 autohotkey taskmanager


【解决方案1】:

尝试在您的脚本中添加#WinActivateForce

如果您以普通用户身份运行 AutoHotkey,它可能无法管理以管理员身份运行的程序(例如 PowerShell)。如果是这种情况,请尝试以管理员身份运行 AutoHotkey。

【讨论】:

  • 谢谢,我添加了,但没有任何变化。
【解决方案2】:

如果您明确最小化“有问题”的应用程序,那么您永远无法 使用 AHK 快捷键激活/最大化窗口。我不确定是否 还有其他情况会阻止快捷方式工作,但 这是复制问题的一种特定方式(至少对我而言)。

根据AutoHotkey's release notes,这是一个已知问题,已在 AutoHotkey v1.1.20 中修复。 (在提出这个问题后 1 个月发布)

1.1.20.00 - March 8, 2015

变化

  • 更改了 WinActivate 以恢复已激活但已最小化的窗口。
  • 更改了 WinActivate 以在 DetectHiddenWindows 关闭且活动窗口被隐藏时查找可见窗口以激活,而不是 什么都不做

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2013-03-20
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多