1

我正在使用 AutoHotKey 来显示/隐藏一个薄荷味的终端窗口。这是我的 AutoHotkey.ahk:

ShowHide_(Title, CommandLine)
{
    OutputDebug, ShowHide called

    DetectHiddenWindows, On
    ; MatchMode = 2 : The title contains the expression
    SetTitleMatchMode, 2

    OutputDebug, Looking for a window named "%Title%"
    IfWinExist %Title%
    {
        OutputDebug, "%Title%" found, is it active?
        IfWinNotActive %Title%
        {
            WinShow
            WinWait, %Title%
            WinRestore
            WinActivate
            OutputDebug, Window is not active, activating...
        }
        Else
        {
            WinMinimize
            WinHide
            OutputDebug, Window is active, hiding...
        }
    }
    Else
    {
        OutputDebug, "%Title%" doesn't exist, starting...
        Run, %CommandLine%
    }
}

#^::
F1::ShowHide_("ahk_class mintty", "C:\cygwin\bin\mintty.exe -t CygTerm")

正如您所注意到的,我制作了一个通用函数,以便能够对其他应用程序执行相同的操作。此外,我还分配了两个键盘组合F1Win+ ^。两种组合都可以很好地启动程序或显示预先存在的窗口,但无法隐藏它,原因有两个:

  1. 使用时F1,甚至无法识别按键(在DbgView中没有痕迹);
  2. 当使用Win+ ^(或其他不使用Fn键的快捷键)时,在 DbgView 中跟踪事件,但没有任何反应。

使用其他程序(例如 Notepad++、calc、...),一切都按预期工作。知道为什么吗?我怎样才能让它工作?

4

1 回答 1

1

我发现如果我使用在开始菜单中自动创建的Cygwin 终端快捷方式,Mintty 无法正确响应 AHK 脚本。

但是,如果我直接创建 mintty.exe 文件 (C:\cygwin\bin\mintty.exe) 的快捷方式,那么它将起作用。

注意:为了使自定义 mintty 快捷方式正常工作,您需要添加连字符“-”作为启动选项。因此,在快捷方式中,目标字段应如下所示:

C:\Cygwin\bin\mintty.exe -

于 2013-08-11T17:40:24.383 回答