使用 Windows 键 + # 快捷键按窗口(而非应用程序)切换窗口?任务栏上还会显示数字?

使用 Windows 键 + # 快捷键按窗口(而非应用程序)切换窗口?任务栏上还会显示数字?

您可以使用键盘在 Windows 11 中切换程序,例如Windows+2转到任务栏上的第二个应用程序,Windows+转到第三个应用程序的第二个窗口。但 (1) 猜测/计算任务栏上每个应用程序的快捷方式编号,以及 (2) 多次按下 + 该数字以进入每个程序中的正确窗口33这非常麻烦Windows。我个人电脑上的解决方案:

  1. Winearo Tweaker 恢复 Windows 10 任务栏,以便我可以使用:
  2. 7+ 任务栏调整器可取消程序分组,以便使用键盘快捷键
  3. 7+ 任务栏编号器可查看每个窗口的编号(每个任务栏项目上覆盖一个小数字图标)
  4. 将 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

相关内容