由于某种原因,我已禁用了标准的WIN键快捷方式,因此,例如,我无法调用WIN + M或WIN + D,它们会完成与我想要的操作类似的操作。 < / p>
我想最小化所有监视器上所有打开的窗口。
我已经以多种方式尝试了这一点,其中最明显的似乎是:
#M::
WinMinimizeAll
return
但是,这只会最小化主监视器上的窗口,而其他监视器上的窗口不受影响。
我也尝试遍历WinGet之类的所有窗口,但似乎找到的进程实际上并不是GUI窗口,并且也将这些窗口最小化,从而导致任务栏上出现奇怪的灰色框工件,而这些窗口却没有。 t点击。
这可行吗?如果我需要其他软件来实现它,那可能也是一个很好的答案。
答案 0 :(得分:1)
如果脚本中没有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
}