如何 close/minimize/maximize 或将键发送到 window 或使用 Autohotkey 弹出?

How to close/minimize/maximize or send keys to window or popup with Autohotkey?

如何使用 Autohotkey 在 window 弹出时自动关闭、最小化、最大化或发送按键?我可以检测到一个对话框并用这个关闭它:

WinWaitActive, TITLE
WinClose, TITLE

但是如果 window 在脚本执行时没有打开,这将不起作用。

这是 AHK 用于的非常常见的任务。

首先,您需要window 的标题。阅读 How to get the title of a window with AHK?.

密码

对于关闭 window 的基本功能,我们需要 Loop, WinWaitActive and WinClose

打开 Stack Overflow 的 Firefox window 示例。

Loop {
  WinWaitActive, Stack Overflow - Mozilla Firefox
  WinClose,
}

说明

Loop 多次重复关闭 window 的过程。 WinWaitActive 等到 window 被激活(弹出)并且 WinClose 关闭它。

提示:如果您没有指定特定的 window 标题,例如 WindowClose 最后找到的 window,即来自 [=15] =]被使用。

minimize/maximize

代替WinClose使用WinMaximize or WinMinimize执行相应的操作。

发送密钥

如果您想将特定键(例如 Enter)发送到 window,请使用 Send

Loop {
  WinWaitActive, Stack Overflow - Mozilla Firefox
  send {Enter}
}

增加

如果基本版本不起作用或者您想创建更高级的脚本,这里有一些可能的修改。

更多力量

如果 WinClose 不起作用,请尝试 WinKillSend, !{F4} 使用更多的力量。

作为管理员

可能需要管理员权限才能关闭 window,在您的脚本之上使用此代码片段以确保它以完全访问权限运行。

If not A_IsAdmin ;force the script to run as admin
{
    Run *RunAs "%A_ScriptFullPath%"
    ExitApp
}

其他搭配方式

默认情况下,window 标题必须完全匹配。要更改此行为并允许 partialstart with 匹配,请在脚本顶部使用 SetTitleMatchMode,例如SetTitlematchMode, 2 部分匹配。

可以使用来自 Window 间谍的 window class (ahk_class) 或 .exe (ahk_exe) 而不是标题。

WinWaitActive, ahk_class MozillaWindowClass

或 WinWaitActive,ahk_exefirefox.exe

Select 仔细选择适合您的需求,只对正确的做出反应 window.