脚本如下:
; 全局变量存储隐藏的窗口列表
global HiddenWindows := []
; 按下 Alt + Q 隐藏该窗口
; 按下 Alt + Shift + Q 恢复窗口
; 按下 Alt + Shift + L 查看隐藏的窗口列表(完整版)
; 按下 Ctrl + Alt + X 退出脚本
; Alt + Q 隐藏鼠标所在的窗口
!q::
{
global HiddenWindows ; 声明使用全局变量
; 获取鼠标当前位置的窗口ID
MouseGetPos ,, &MouseWin
; 获取窗口标题用于显示
WinTitle := WinGetTitle(MouseWin)
try {
; 隐藏窗口前先保存信息
windowInfo := Map()
windowInfo["id"] := MouseWin
windowInfo["title"] := WinTitle
windowInfo["time"] := A_Now
; 添加到隐藏列表
HiddenWindows.Push(windowInfo)
; 隐藏窗口
WinHide MouseWin
; 提示信息
ToolTip("已隐藏: " WinTitle, A_ScreenWidth//2, 20)
SetTimer () => ToolTip(), -2000 ; 2秒后消失
SoundPlay("*-1", 1)
} catch as e {
SoundPlay("*16", 1)
MsgBox "隐藏窗口失败: " e.Message
}
}
; Alt + Shift + Q 显示所有被隐藏的窗口
!+q::
{
global HiddenWindows ; 声明使用全局变量
if (HiddenWindows.Length = 0) {
ToolTip("没有隐藏的窗口", A_ScreenWidth//2, 20)
SetTimer () => ToolTip(), -2000
return
}
restored := 0
DetectHiddenWindows true
for window in HiddenWindows {
try {
WinShow window["id"]
restored++
}
}
; 清空隐藏列表
HiddenWindows := []
DetectHiddenWindows false
ToolTip("已恢复 " restored " 个窗口", A_ScreenWidth//2, 20)
SetTimer () => ToolTip(), -2000
SoundPlay("*-1", 1)
}
; 显示隐藏窗口列表
!+l::
{
global HiddenWindows ; 声明使用全局变量
if (HiddenWindows.Length = 0) {
MsgBox "当前没有隐藏的窗口"
return
}
list := "已隐藏的窗口:`n`n"
for i, window in HiddenWindows {
list .= i ". " window["title"] "`n"
}
MsgBox list
}
; 退出脚本
^!x::ExitApp