Answers:
解决方案是使用 Alt键 + 退出
它将切换到下一个打开的窗口,跳过最小化的窗口。更重要的是,即使Windows Shell挂起,它也能正常工作 Alt键 + 标签 停止工作
不幸的是,伴随着所有这些兴奋 Alt键 + 标签 ,另一个热门被可悲地忽略了。 Windows 2.0引入了 Alt键 + 退出 热键。而 Alt键 + 标签 让你选择一个应用程序, Alt键 + 退出 让你循环通过它们。
当你按下 Alt键 + 退出 ,活动窗口被发送到窗口堆栈的底部,允许z-order下面的窗口成为新的活动窗口。如果下一个窗口是最小化窗口,它将保持最小化。虽然这听起来像是一个烦恼,但它实际上是一个有用的设备,因为它可以让您跳过最小化的应用程序,而无需打开它们。
AutoHotkey v1.1的以下脚本通过检测何时最小化窗口并通过临时更改窗口样式将其强制转到alt-tab列表的末尾来解决此问题。该脚本在后台运行,不需要使用特定的热键(或任何热键)。
; Use a shell hook to detect minimize and fix the alt-tab order.
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellHook")
DllCall("RegisterShellHookWindow", "ptr", A_ScriptHwnd)
ShellHook(wParam, lParam)
{
if (wParam != 0x5) ; HSHELL_GETMINRECT
return
hwnd := NumGet(lParam+0)
WinGet minmax, MinMax, ahk_id %hwnd%
if (minmax = -1) ; Minimized
{
; Remove the window from the alt-tab list temporarily to force
; it to the end of the list. To do this, temporarily apply the
; WS_EX_TOOLWINDOW style and remove WS_EX_APPWINDOW (if present).
WinGet oldxs, ExStyle, ahk_id %hwnd%
newxs := (oldxs & ~0x40000) | 0x80
if (newxs != oldxs)
{
WinSet ExStyle, % newxs, ahk_id %hwnd%
WinSet ExStyle, % oldxs, ahk_id %hwnd%
}
}
}
警告:这可能会对某些窗口产生负面影响,因为它会修改窗口的扩展样式属性(暂时)。我在测试过程中没有发现任何问题。
我发现暂时从alt-tab移除窗口移动了它 几乎 到列表的末尾。如果我连续最小化多个窗口,则第一个窗口显示在最后,每个后续最小化窗口插入其他窗口之前(但在所有其他窗口之后)。
我在Windows 10 v1709上测试过。结果可能因其他系统而异。
.ahk
扩展名,打开文件。如果可行,请通过任何方法将其添加到系统启动。
我同意@LưuVĩnhPhúc建议的内容,我继续写了一篇文章 AutoHotkey的 或多或少做的脚本。
forward := true
cycling := false
~Alt Up::
if cycling
forward := !forward
cycling := false
return
!Tab::Cycle(forward)
!+Tab::Cycle(!forward)
Cycle(direction)
{
global cycling
if direction
{
send !{Escape}
}
else
{
send !+{Escape}
}
cycling := true
}
!Escape::!Tab
安装程序,把它放在一个 .ahk
文件某处并运行它。
它会设定 Alt键 + 标签 使用 Alt键 + 逃逸 和 Alt键 + 转移 + 逃逸 交替,所以你可以来回切换。最后一行是这样的 Alt键 + 逃逸 作为常规的功能 Alt键 + 标签 ,如果您仍想访问该功能。如果需要,您可以将其删除。
这个脚本改变了 Alt键 + 标签 要么是 Alt键 + 逃逸 要么 Alt键 + 转移 + 逃逸 ,每当你释放它时改变它的方向 Alt键 切换窗口后的按键(即也按下了) 标签 ) 至少一次。
这并没有改变背后的机制 Alt键 + 逃逸 所以,如果你持有 Alt键 并按 标签 两次,你可能没有到达你所在的倒数第二个窗口。当方向被“反转”时,你可能会得到“较旧”的窗户(你有一段时间没有使用过的窗户)你切换到的最后一个窗口除外;你会得到那个(这就是我首先在方向上翻转的全部原因)。
按Ctrl + Alt键 + 标签 仍然保留其原始功能 - 即它使用常规功能 Alt键 + 标签 机制。不知道你想做什么。
另一种选择是编写一个程序,可以隐藏所有当前最小化的窗口并恢复它们,然后使用AutoHotkey来制作 Alt键 + 标签 在释放之前激活该程序以隐藏所有最小化的窗口 Alt键 + 标签 通过,然后让你在发布时再次显示它们 Alt键 切换窗户后(如果按下则不需要这样做) Alt键 由于其他原因)。
但是,这需要更多的工作,这将导致您在切换窗口时更改任务栏中的打开应用程序,并在停止时恢复,这可能看起来很奇怪。
如果你选择这样做,我建议你注意不要简单地调用程序 Alt键 + 标签 ,但只是在你按下之后第一次按下那个组合 Alt键 。