您可以使用键盘在 Windows 11 中切换程序,例如Windows+2转到任务栏上的第二个应用程序,Windows+转到第三个应用程序的第二个窗口。但 (1) 猜测/计算任务栏上每个应用程序的快捷方式编号,以及 (2) 多次按下 + 该数字以进入每个程序中的正确窗口3,3这非常麻烦Windows。我个人电脑上的解决方案:
- Winearo Tweaker 恢复 Windows 10 任务栏,以便我可以使用:
- 7+ 任务栏调整器可取消程序分组,以便使用键盘快捷键
- 7+ 任务栏编号器可查看每个窗口的编号(每个任务栏项目上覆盖一个小数字图标)
- 将 Windows 11 更改为深色主题,以便我可以看到数字
不幸的是,我所在的 IT 部门不允许使用 7+ 程序。还有其他方法吗?我可以使用 AutoHotkey,但我不知道它是否可以获取任务栏上窗口的顺序和宽度。如果不使用任务栏上的位置,是否有任何好的方法可以用键盘切换窗口?我经常这样做,所以多步骤快捷键(例如Windows+)Tab不是一个好选择。也许像任务视图这样的东西我可以用一个键激活,每个窗口旁边都有一个数字,您可以键入以激活?
答案1
您可以将程序固定到任务栏并将其移动到特定位置,这样您始终知道哪个组合键适用于给定的程序。
如果在程序处于活动状态时按下组合键,程序将切换到该程序(否则将打开一个新实例)。如果程序生成多个窗口并创建一个组,您可以通过连续多次按下组合键在该组内的窗口之间切换。
有了这些知识,您实际上可以创建一个自动热键脚本,通过多次按下键盘快捷键可以从一个组中切换到第 2 个或第 3 个等窗口。
例如,假设有问题的窗口位于任务栏的第 3 个位置,您可以将 WIN+F1 映射到按 WIN+3 一次,将 WIN+F2 映射到按 WIN+3 两次,将 WIN+F3 映射到按 WIN+3 三次。
答案2
如果您想使用AutoHotkey,您不需要遵守系统的切换窗口规则。
我会使用这样的东西:
#Requires AutoHotkey v1.1
; === auto-execute section === (top of the script)
; create a group of each program:
GroupAdd, explorer, ahk_class CabinetWClass
GroupAdd, notepad, ahk_class Notepad
GroupAdd, msedge, ahk_exe msedge.exe
; ...
RETURN ; === end of auto-execute section ===
; Press Win+Number to run a new instance of each program:
#1::Run explorer
#2::Run notepad
#3::Run msedge
; Press Ctrl+Win+Number to
; activate the window of each program if their number is 1,
; to activate the next window if their number is 2
; or to create a menu if their number is greater than 2:
^#1::activate_group("explorer")
^#2::activate_group("notepad")
^#3::activate_group("msedge")
activate_group(group){
WinGet, number_of_windows, count, ahk_group %group%
If (number_of_windows = 0)
return
If (number_of_windows = 1) || (number_of_windows = 2)
GroupActivate, %group%, R
else
Menu(group)
}
Menu(group){
Menu, Windows, Add
Menu, Windows, deleteAll
WinGet, id, list, ahk_group %group%
Loop, %id%
{
this_ID := id%A_Index%
WinGetTitle, title, ahk_id %this_ID%
WinGet, Path, ProcessPath, ahk_id %this_ID%
Menu, Windows, Add, %title%%A_Tab%%this_ID%, AktivateWindow
Try
Menu, Windows, Icon, %title%%A_Tab%%this_ID%, %Path%
Catch
Menu, Windows, Icon, %title%%A_Tab%%this_ID%, %A_WinDir%\System32\SHELL32.dll, 3, 0
}
Menu, Windows, Show
}
AktivateWindow:
ID := StrSplit(A_ThisMenuItem, A_Tab).2
WinActivate, ahk_id %ID%
return