AutoHotKey:意想不到的薄荷行为

时间:2013-08-09 08:35:08

标签: cygwin autohotkey mintty

我正在使用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")

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

  1. 使用 F1 时,甚至无法识别按键(DbgView中没有跟踪);
  2. 当使用 Win + ^ (或其他不使用 Fn 键的快捷键)时,事件在DbgView中被跟踪,但没有任何反应。
  3. 使用其他程序(例如Notepad ++,calc,...),一切都按预期工作。 知道为什么吗?我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

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

但是,如果我直接在mintty.exe文件(C:\ cygwin \ bin \ mintty.exe)上创建一个快捷方式,那么它就能正常工作。

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

C:\ Cygwin \ bin \ mintty.exe -