你能用 AutoHotkey 绑定一个键来最小化所有打开的 windows 吗?
Can you bind a key to minimize all open windows with AutoHotkey?
我禁用了标准的 WIN 快捷键是有原因的,所以我不能调用 WIN+M 或 WIN+D 来做类似我想要的事情。
我想最小化所有显示器上的所有打开 windows。
我自己尝试了几种方法,其中最明显的似乎是:
#M::
WinMinimizeAll
return
然而,这只会最小化主监视器上的 windows,而其他监视器上的 windows 不受影响。
我也试过遍历从 WinGet 等获得的所有 windows,但它似乎找到了不是真正 GUI windows 的进程并将它们也最小化,导致奇怪任务栏下方的灰色方块不可点击。
这可行吗?如何实现?如果我需要另一个软件来实现它,这也是一个很好的答案。
如果您的脚本中没有 DetectHiddenWindows On
,WinGet 是一个不错的选择:
SetWinDelay -1
$F1::MinimizeAll()
$F2::RestoreAll()
MinimizeAll(){
DetectHiddenWindows Off
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
If NOT IsWindow(WinExist("ahk_id" . this_ID))
continue
WinGet, WinState, MinMax, ahk_id %this_ID%
If (WinState = -1)
continue
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
WinMinimize, ahk_id %this_ID%
}
}
RestoreAll(){
DetectHiddenWindows Off
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
If NOT IsWindow(WinExist("ahk_id" . this_ID))
continue
WinGet, WinState, MinMax, ahk_id %this_ID%
If (WinState != -1)
continue
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
WinRestore, ahk_id %this_ID%
}
}
; Check whether the target window is activation target
IsWindow(hWnd){
WinGet, dwStyle, Style, ahk_id %hWnd%
if ((dwStyle&0x08000000) || !(dwStyle&0x10000000)) {
return false
}
WinGet, dwExStyle, ExStyle, ahk_id %hWnd%
if (dwExStyle & 0x00000080) {
return false
}
WinGetClass, szClass, ahk_id %hWnd%
if (szClass = "TApplication") {
return false
}
return true
}
我禁用了标准的 WIN 快捷键是有原因的,所以我不能调用 WIN+M 或 WIN+D 来做类似我想要的事情。
我想最小化所有显示器上的所有打开 windows。
我自己尝试了几种方法,其中最明显的似乎是:
#M::
WinMinimizeAll
return
然而,这只会最小化主监视器上的 windows,而其他监视器上的 windows 不受影响。
我也试过遍历从 WinGet 等获得的所有 windows,但它似乎找到了不是真正 GUI windows 的进程并将它们也最小化,导致奇怪任务栏下方的灰色方块不可点击。
这可行吗?如何实现?如果我需要另一个软件来实现它,这也是一个很好的答案。
如果您的脚本中没有 DetectHiddenWindows On
,WinGet 是一个不错的选择:
SetWinDelay -1
$F1::MinimizeAll()
$F2::RestoreAll()
MinimizeAll(){
DetectHiddenWindows Off
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
If NOT IsWindow(WinExist("ahk_id" . this_ID))
continue
WinGet, WinState, MinMax, ahk_id %this_ID%
If (WinState = -1)
continue
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
WinMinimize, ahk_id %this_ID%
}
}
RestoreAll(){
DetectHiddenWindows Off
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
If NOT IsWindow(WinExist("ahk_id" . this_ID))
continue
WinGet, WinState, MinMax, ahk_id %this_ID%
If (WinState != -1)
continue
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
WinRestore, ahk_id %this_ID%
}
}
; Check whether the target window is activation target
IsWindow(hWnd){
WinGet, dwStyle, Style, ahk_id %hWnd%
if ((dwStyle&0x08000000) || !(dwStyle&0x10000000)) {
return false
}
WinGet, dwExStyle, ExStyle, ahk_id %hWnd%
if (dwExStyle & 0x00000080) {
return false
}
WinGetClass, szClass, ahk_id %hWnd%
if (szClass = "TApplication") {
return false
}
return true
}