如何使用Autohotkey在弹出窗口时自动关闭,最小化,最大化或发送键到窗口?我可以检测到一个对话框并用它关闭它:
WinWaitActive, TITLE
WinClose, TITLE
但是如果窗口在脚本执行时没有打开,那么这不起作用。
答案 0 :(得分:1)
这是AHK用于的非常常见的任务。
首先,您需要要解决的窗口标题。阅读How to get the title of a window with AHK?。
关于关闭窗口的基本功能,我们需要Loop,WinWaitActive和WinClose。
打开堆栈溢出的Firefox窗口示例。
Loop {
WinWaitActive, Stack Overflow - Mozilla Firefox
WinClose,
}
Loop
重复多次关闭窗口的过程。 WinWaitActive
等待窗口被激活(弹出)并WinClose
关闭它。
提示:如果您没有指定与WindowClose
一样的指定窗口标题,则会使用WinWaitActive
中最后找到的窗口。 < / p>
<强>最小化/最大化强>
而不是WinClose
使用WinMaximize或WinMinimize来执行相应的操作。
发送密钥
如果您想将特定密钥(例如 Enter )发送到窗口,请使用Send
Loop {
WinWaitActive, Stack Overflow - Mozilla Firefox
send {Enter}
}
如果基本版本不起作用或您想创建更高级的脚本,可以进行一些可能的修改。
更多力量
如果WinClose
不起作用,请尝试WinKill或Send, !{F4}
使用更多的力量。
作为管理员
关闭窗口可能需要管理员权限,在脚本之上使用此代码段以确保它以完全访问权限运行。
If not A_IsAdmin ;force the script to run as admin
{
Run *RunAs "%A_ScriptFullPath%"
ExitApp
}
其他匹配方法
默认情况下,窗口标题必须是完全匹配。要更改此行为并允许部分或以开头匹配,请在脚本顶部使用SetTitleMatchMode,例如SetTitlematchMode, 2
部分匹配。
可以使用Window Spy中的窗口类(ahk_class)或.exe(ahk_exe)代替title。
WinWaitActive, ahk_class MozillaWindowClass
或 WinWaitActive,ahk_exe firefox.exe
仔细选择符合您需求的选项,只对正确的窗口作出反应。