web-dev-qa-db-fra.com

Raccourci dans Windows 7 pour basculer entre les mêmes fenêtres d’application, comme Cmd + `sous OS X

Existe-t-il un raccourci dans Windows 7 permettant de basculer d'une fenêtre à une autre dans une application donnée? J'aime beaucoup cette fonctionnalité sous OS X; quel est son équivalent sous Windows?

34
jiejieup

S'il s'agit de l'une des neuf premières applications de la barre des tâches, alors  (Gagner)+n, où n est son numéro de position, le sélectionne et parcourt les fenêtres. Par exemple, les navigateurs Windows et Internet Explorer sont les deux premiers éléments de la barre des tâches, ce qui me permet d’utiliser +1 parcourir mes répertoires et +2 faire défiler mes navigateurs.

42
Scott

Sous Windows 7 et 8, bien qu’il n’y ait pas de raccourci que je connaisse disponible à partir du clavier seul, vous pouvez tenir Ctrl en cliquant sur l'icône de la barre des tâches de l'application qui vous intéresse. Chaque fois que vous faites cela, une fenêtre différente appartenant à cette application apparaîtra au premier plan.

De plus, le programme VistaSwitcher configure Win + F11 et Alt + `pour basculer entre les fenêtres de l'application en cours. (En passant, son site Web indique que Windows 8 n’est pas pris en charge, mais j’ai eu de la chance avec cette version 8.1; le seul problème que j’ai vu jusqu’à présent est qu’elle répertorie parfois des éléments tels que la barre latérale de recherche comme fenêtres ouvertes. J'ignore simplement cela, mais YMMV.)

24
echristopherson

Vous pouvez utiliser AutoHotkey: www.autohotkey.com

Et mettez ce script là:

!`:: ; Next window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
    Return
Else
WinGet, List, List, % "ahk_class " ActiveClass
Loop, % List
{
    index := List - A_Index + 1
    WinGet, State, MinMax, % "ahk_id " List%index%
    if (State <> -1)
    {
        WinID := List%index%
        break
    }
}
WinActivate, % "ahk_id " WinID
return

!^`:: ; Last window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
    Return
Else
WinGet, List, List, % "ahk_class " ActiveClass
Loop, % List
{
    index := List - A_Index + 1
    WinGet, State, MinMax, % "ahk_id " List%index%
    if (State <> -1)
    {
        WinID := List%index%
        break
    }
}
WinActivate, % "ahk_id " WinID
return

Fonctionne très bien pour moi. À l’aide de Autohotkey, j’ai également créé des touches copier/coller/annuler, comme sur Mac. Fonctionne très bien!

Les ères

21
Seperman

Merci, Erasmose, mais votre version du script autohotkey minimisera une fenêtre s'il n'y a pas d'autres fenêtres de ce type. Parfois, vous ne savez pas, et minimiser est un moyen ennuyant de le savoir, alors j'ai modifié votre script de la manière suivante:

!`::    ; Next window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
    Return
Else
WinSet, Bottom,, A
WinActivate, ahk_class %ActiveClass%
return

!+`::    ; Last window
WinGetClass, ActiveClass, A
WinActivateBottom, ahk_class %ActiveClass%
return

oh, et j'ai aussi changé la dernière classe pour utiliser shift au lieu de ctrl puisque je suis le modificateur pour revenir en arrière avec plusieurs autres raccourcis clavier. J'aime autohotkey.

8
user332861

Certaines applications qui implémentent MDI fournissent Ctrl + Tab pour basculer entre "Documents" sous la même instance d'application. par exemple. MS Office. Mais ce n’est pas une fonctionnalité de Windows et dépend de l’application. Pour les autres logiciels, il existe différents raccourcis. par exemple. Firefox ne fournit pas cette fonctionnalité mais il existe un add-on qui ajoute cette fonctionnalité.

De plus, voici une liste de raccourcis clavier fournie dans Windows.

En outre, il existe des discussions existantes sur les raccourcis clavier dans Windows.

J'espère que cela pourra aider.

7
Nishant Sharma

Easy Windows Switcher de Neosmart fait exactement ce que vous voulez.

Voici la description du Easy Windows Switcher Site Web

Easy Window Switcher permet de passer d'une fenêtre à l'autre aussi facilement alt+` (c'est alt + backtick) comme sur un Mac. Oubliez devoir alt+tab entre un million et un fenêtres différentes pour trouver celle que vous recherchez. Avec Easy Window Switcher, la tabulation entre les fenêtres du même programme n'est qu'une alt+` une façon.

5
Ishan

VistaSwitcher permet ou pour cette fonctionnalité. Son compatible avec Windows 10, (bien que le nom suggère le contraire). Sous Windows 8 et supérieur, je suggère d'ajouter certaines applications de métro à la liste d'exclusion.

La réponse principale est bonne, mais ne fonctionne pas sur les configurations multi-écrans où la barre des tâches est configurée pour afficher uniquement les icônes sur les écrans actifs.

4
Janac Meena

Avec AutoHotkey aussi, un comportement plus naturel:

; Switch between windows of the same application with Alt+(key above Tab)
; Icon: made by Freepik (www.freepik.com), licence CC 3.0 BY
;       from https://www.flaticon.com/free-icon/switch-window_71630
; Script Licence: CC0 (Public Domain)
; Source: https://framagit.org/dr4Ke/AutoHotkey_scripts

KeyName := GetKeyName("sc029")
Menu, Tray, Tip, Switch between windows of the same applications with 'Alt+%KeyName%'

*!SC029::
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
If WinClassCount = 1
    Return
WinGet, List, List, % "ahk_class " ActiveClass

index := 0
if not GetKeyState("Shift") {
    index := 1
}
;MsgBox, Entering Loop
While GetKeyState("Alt") {
    If GetKeyState("Shift") {
        index := Mod(List + index - 2, List) + 1
    } else {
        index := Mod(List + index, List) + 1
    }
    WinGet, State, MinMax, % "ahk_id " List%index%
    if (State == -1)
    {
        continue
    }
    WinID := List%index%
    WinActivate, % "ahk_id " WinID
    ErrorLevel := 1
    sleep 50
    While (ErrorLevel != 0) and GetKeyState("Alt") {
        KeyWait, sc029, DT1
    }
}
return

En plus de ce que Scott ( https://superuser.com/users/150988/scott ) a partagé:

ctrl+repeatedly click sur l’icône de l’application dans la barre des tâches fera également le travail.

1
Nestor Waldyd

J'ai créé un script AutoHotkey pour basculer entre les fenêtres de la même application fonctionnant avecwindows classiques,raccourcis vers ChromeetChrome Apps.

https://github.com/JuanmaMenendez/AutoHotkey-script-Open-Show-Apps/blob/master/AutoHotkey-script-Switch-Windows-same-App.ahk

Supplémentaire

Dans ce répertoire Github , il existe un autre script AutoHotkey qui pourrait bien fonctionner en parallèle avec celui-ci, car vous pourrez ouvrir, restaurer ou réduire au minimum vos applications à l’aide des touches de raccourci de votre choix.

Exemple:

F7 :: OpenOrShowAppBasedOnExeName ("C:\Windows\System32\SnippingTool.exe")

F8 :: OpenOrShowAppBasedOnWindowTitle ("Gmail", "C:\Fichiers de programme (x86)\Google\Chrome\Application\chrome.exe --app = https://mail.google.com/mail/ ")

0
Juanma Menendez

J'ai créé un script AutoHotkey qui s'intègre parfaitement à Windows Task Switcher (Alt+Tab), offrant tous ses avantages: aperçus des fenêtres d’application, cliquez pour sélectionner, navigation par touches de direction, activez uniquement la fenêtre unique de votre choix. Invoquer/naviguer avec Alt+` et Alt+Shift+` (backtick) pour alterner entre les fenêtres ayant le même nom de processus que la fenêtre en cours. Je trouve cela plus utilisable que Win+num comme cela fonctionne pour n'importe quelle application (plutôt que d'avoir à mémoriser le numéro d'emplacement épinglé), les aperçus de fenêtre sont plus grands, l'arrière-plan n'est pas flou et se mélange parfaitement avec Alt+Tab la navigation. Testé sous Windows 10.

L'astuce principale consiste à masquer temporairement les fenêtres d'applications non ciblées à Task Switcher en définissant WS_EX_TOOLWINDOW et en désactivant WS_EX_APPWINDOW. AutoHotkey doit être signé ou exécuté en tant qu'administrateur pour définir ces styles de fenêtres sur les fenêtres exécutées en tant qu'administrateur. J'ai suivi les instructions de signature très faciles ici .

Quelques discussions connexes qui ont contribué:

!`::
{
   WS_EX_TOOLWINDOW = 0x80
   WS_EX_APPWINDOW = 0x40000
   tw := []
   aw := []

   WinGet, processName, ProcessName, A

   DetectHiddenWindows, Off
   AltTab_window_list(1)

   Loop, %AltTab_ID_List_0%
   {
      wid := AltTab_ID_List_%A_Index%
      WinGet, processName2, ProcessName, ahk_id %wid%

      if (processName2 != processName)
      {
         WinGet, exStyle2, ExStyle, ahk_id %wid%

         if (!(exStyle2 & WS_EX_TOOLWINDOW))
         {
            tw.InsertAt(0, wid)
            WinSet, ExStyle, ^0x80, ahk_id %wid%
         }

         if ((exStyle2 & WS_EX_APPWINDOW))
         {
            aw.InsertAt(0, wid)
            WinSet, ExStyle, ^0x40000, ahk_id %wid%
         }
      }
   }

   Send {Alt Down}{Tab} ; Bring up switcher immediately

   KeyWait, ``, T.25  ; Go to next window; wait .25s before looping
   if (Errorlevel == 0)
   {
      While ( GetKeyState( "Alt","P" ) )
      {
         KeyWait, ``, D T.25
         if (Errorlevel == 0)
         {
            if (GetKeyState( "Shift","P" ))
            {
               Send {Alt Down}{Shift Down}{Tab}
               Sleep, 200
            }
            else
            {
               Send {Alt Down}{Tab}
               Sleep, 200
            }
         }
      }
   }

   Send {Alt Up} ; Close switcher on hotkey release

   for index, wid in tw
   {
      WinSet, ExStyle, ^0x80, ahk_id %wid%
   }

   for index, wid in aw
   {
      WinSet, ExStyle, ^0x40000, ahk_id %wid%
   }
}
return

AltTab_window_list(excludeToolWindows)
{
   global
   WS_EX_CONTROLPARENT =0x10000
   WS_EX_APPWINDOW =0x40000
   WS_EX_TOOLWINDOW =0x80
   WS_DISABLED =0x8000000
   WS_POPUP =0x80000000
   AltTab_ID_List_ =0
   WinGet, Window_List, List,,, Program Manager ; Gather a list of running programs
   id_list =
   Loop, %Window_List%
   {
      wid := Window_List%A_Index%
      WinGetTitle, wid_Title, ahk_id %wid%
      WinGet, Style, Style, ahk_id %wid%

      If ((Style & WS_DISABLED) or ! (wid_Title)) ; skip unimportant windows
         Continue

      WinGet, es, ExStyle, ahk_id %wid%
      Parent := Decimal_to_Hex( DllCall( "GetParent", "uint", wid ) )
      WinGetClass, Win_Class, ahk_id %wid%
      WinGet, Style_parent, Style, ahk_id %Parent%

      If ((excludeToolWindows & (es & WS_EX_TOOLWINDOW))
         or ((es & ws_ex_controlparent) and ! (Style & WS_POPUP) and !(Win_Class ="#32770") and ! (es & WS_EX_APPWINDOW)) ; pspad child window excluded
         or ((Style & WS_POPUP) and (Parent) and ((Style_parent & WS_DISABLED) =0))) ; notepad find window excluded ; note - some windows result in blank value so must test for zero instead of using NOT operator!
         continue
      AltTab_ID_List_ ++
      AltTab_ID_List_%AltTab_ID_List_% :=wid
   }  
   AltTab_ID_List_0 := AltTab_ID_List_
}
0
KrisG