• 隐藏窗口
    • 按下 F1 热键,将鼠标下的活动窗口隐藏。
    • 隐藏的窗口信息会添加到托盘菜单中,显示窗口标题和图标。
  • 恢复窗口
    • 单击托盘图标,选择需要恢复的窗口菜单项,窗口会重新显示。
  • 退出脚本
    • 托盘菜单中点击 Exit,所有被隐藏的窗口会自动恢复。

 

; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=92431
#NoEnv
#Persistent
#SingleInstance, Force
SetFormat, IntegerFast, Hex
SetBatchLines, -1
SetWinDelay, -1

Global Cached_Windows := {}

Menu, Tray, NoStandard
Menu, Tray, Icon, C:\Windows\system32\shell32.dll, 3
Menu, Tray, Add, Exit, Exit
Menu, Tray, Icon, Exit, C:\Windows\system32\shell32.dll, 113
Return

; 按F1将鼠标下的窗口最小化的托盘脚本图标中,点击脚本图标可选择恢复窗口
F1::
WinGet, WinID, ID, A
WinGet, WinIcon, ProcessPath, ahk_id %WinID%
WinGetTitle, WinTitle, ahk_id %WinID%
WinGet, Style, Style, ahk_id %WinID%
if (Style & 0xC00000) { ; If active window has titlebar
  ObjRawSet(Cached_Windows, WinID, WinID)
  BoundGivePar := Func("MenuItemClick").Bind(WinID, WinTitle)
  if (StrLen(WinTitle) > 50)
    WinTitle := SubStr(WinTitle, 1, 50) "..."
  Menu, Tray, Insert, 1&, %WinTitle%, %BoundGivePar%
  Menu, Tray, Icon, %WinTitle%, %WinIcon%
  WinHide, ahk_id %WinID%
}
Return

MenuItemClick(WinID, WinTitle, ItemName, ItemPosition) {
  WinShow, ahk_id %WinID%
  Cached_Windows.Delete(WinID)
  Menu, Tray, Delete, %ItemPosition%&
}

Exit:
For index, WinID in Cached_Windows
  WinShow, ahk_id %WinID%
ExitApp

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。