Verknüpfung in Windows 7, um zwischen den Fenstern derselben Anwendung zu wechseln, z. B. Cmd + `in OS X


38

Gibt es in Windows 7 eine Verknüpfung zum Wechseln zwischen Fenstern nur in einer bestimmten Anwendung? Ich mag dieses Feature in OS X sehr. Was ist das Äquivalent in Windows?



<rant> Ich wünschte, Redmond würde sich auf UX konzentrieren und weitere Windows-Tastenkombinationen hinzufügen, wie für diese Frage. Sie geben uns 99% der Dinge, die wir nicht wollen, aber vereinfachen nicht nur unser Leben, indem sie die Verwendung von Windows vereinfachen. Ich schätze, ein Junior-Programmierer würde alle zwei Stunden brauchen, um eine neue Verknüpfung dafür hinzuzufügen. </ Rant>
Pete Alvin,

Antworten:


45

Wenn es sich um eine der ersten zehn Anwendungen in der Taskleiste handelt, wählt (Win)+ n, wobei n die Positionsnummer ist, diese aus und blättert durch die Fenster. (Verwenden Sie 0(Null) für die zehnte Anwendung.) Ich habe beispielsweise Windows Explorer und Internet Explorer als erste beiden Dinge in meiner Taskleiste fixiert, sodass ich mit + 1durch meine Verzeichnisse und + blättern kann2 durch meine Browser blättern kann.


Einige merkwürdige Noten:

  • Wenn Sie eine Ziffer gedrückt halten und eingeben (und loslassen) n, öffnet Windows die  n- te Anwendung in der Taskleiste. Wenn Sie wiederholt auf tippen, n werden die Fenster dieses Programms wie oben beschrieben durchlaufen. Wie  von TranslucentCloud angegeben , durchläuft der Befehl , wenn Sie Shift+ eingeben , ndiese in umgekehrter Reihenfolge, z. B. mit Alt+ Tab und  Ctrl+ Tabusw.

    Wenn die n- te Anwendung in der Taskleiste angeheftet ist, aber nicht ausgeführt wird, wird sie von + ngestartet. 

  • Aber, wenn SieTaste gedrückt halten undShift, von Anfang, und gebendannn, Windows wird eine neue Instanz starten (oder zumindest ein neues Fenster) diese Anwendung, auch wenn es bereits läuft.  (Dies schlägt bei einigen Anwendungen wie Windows Media Player fehl, bei denen nicht mehrere Fenster gleichzeitig ausgeführt werden können.)
  • + nscheint mit der Zehnertastatur nicht zu funktionieren.

1
Dies scheint bei einem Multi-Screen-Setup, bei dem Sie die Taskleiste erweitern, nicht zu funktionieren
Erfan,

1
Groß. Und Win + Shift + 1 durchläuft die Fenster in umgekehrter Reihenfolge.
TranslucentCloud

24

In Windows 7 und 8 gibt es zwar keine Tastenkombination, von der ich weiß, dass sie nur über die Tastatur verfügbar ist. Sie können sie jedoch Ctrlgedrückt halten, während Sie auf das Taskleistensymbol der gewünschten App klicken. Jedes Mal, wenn Sie dies tun, wird ein anderes Fenster angezeigt, das zu dieser App gehört Kommen Sie in den Vordergrund.

Außerdem richtet das Programm VistaSwitcherWin + F11und Alt+ ein `, um zwischen den Fenstern der aktuellen App zu wechseln. (Übrigens heißt es auf der Website, dass Windows 8 nicht unterstützt wird, aber ich hatte Glück mit dieser Version unter 8.1. Das einzige Problem, das ich bisher gesehen habe, ist, dass manchmal Dinge wie die Suchleiste als offene Fenster aufgelistet werden. Ich ignoriere sie einfach das, aber YMMV.)


2
GROSSE Verbesserung der Lebensqualität. Ein dedizierter Hotkey wäre zwar idealer, die WIN + # -Lösung ist jedoch durch die Anzahl der Tasten, die schlechte Ergonomie und die schreckliche Verzögerung stark eingeschränkt, ganz zu schweigen davon, dass Konflikte zwischen den verfügbaren Hotkeys (1-4) und der gewünschten Position der Startleiste auftreten.
bpcookson

1
VistaSwitcher ist wunderschön. Danke für den Vorschlag.
Dustin Oprea

Sie können der Ausschlussliste auch Elemente wie "Neue Benachrichtigung" und "Cortana" unter Windows 10
hinzufügen

1
Ich liebe Vista Switcher-Programm.
Luke

1
sieht aus wie der Nachfolger von vistaswitcher, der alt-tab terminatornicht mehr die Funktion hat, zwischen derselben Anwendung zu
wechseln

23

Sie können AutoHotkey verwenden: www.autohotkey.com

Und setzen Sie dieses Skript dort:

!`:: ; 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

Funktioniert sehr gut für mich. Mit Autohotkey habe ich auch meine Schlüssel zum Kopieren / Einfügen / Rückgängigmachen gemacht, wie zum Beispiel Mac. Funktioniert super!

Ären


2
Dies funktioniert hervorragend mit einigen Einschränkungen: 1) Bei Chrome werden alle Chrome-ähnlichen Fenster einschließlich Anwendungen wie Slack! 2) Für moderne Apps - und wenn Sie nur ein Fenster für moderne Apps geöffnet haben - wird eine zufällige andere moderne App geöffnet (dh wenn Sie den Kalender geöffnet haben und dies die einzige offene moderne App ist, werden "Einstellungen" geöffnet. oder "Sport" oder "Mail", etc.)
Kirk Woll

@ KirkWoll Das stimmt. Es gibt definitiv Raum für Verbesserungen. Ich hatte nicht die Zeit, mich wirklich in Autohotkey zu
vertiefen

Toller Job, habe ihn sofort genutzt, danke. Ein paar Punkte: WinGet, ListGibt die Anzahl der Fenster in der ListVariablen zurück (im Gegensatz zum List%n%Pseudoarray, in dem die Handles gespeichert sind), sodass Sie den WinGet, WinClassCountAufruf überspringen und Liststattdessen nachsehen können. Außerdem scheint der Code für beide Hotkeys identisch zu sein.
Lebenita

Es funktioniert nicht mit Windows 10 64bit und Microsoft Office 2016. Können Sie mir helfen?
Luke

1
Dies funktioniert gut, scheint jedoch unabhängig vom Desktop zwischen ALLEN Fenstern zu wechseln. Ich benutze die Aufgabenansicht ausgiebig und muss nur auf demselben Desktop durch Fenster springen.
Petr

8

Danke, Erasmose, aber Ihre Version des Autohotkey-Skripts minimiert ein Fenster, wenn es keine anderen Fenster dieses Typs gibt. Manchmal weißt du es nicht und das Minimieren ist eine lästige Möglichkeit, es herauszufinden. Ich habe dein Skript folgendermaßen modifiziert:

!`::    ; 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, und ich habe auch die letzte Klasse geändert, um Shift anstelle von Strg zu verwenden, da dies der Modifikator ist, um mit mehreren anderen Tastaturkürzeln rückwärts zu gehen. Ich liebe Autohotkey.


1
Cool. Ich habe meinen Code basierend auf Ihrem und einem Feedback, das ich im Autohotkey-Forum erhalten habe, aktualisiert. Der neue Code durchläuft minimierte Fenster nicht wie unter Mac.
Seperman

@Seperman was ist, wenn ich auch minimierte Fenster durchlaufen möchte? Was muss ich in Ihrem Skript ändern, um das zu tun.
Ghos3t

Dies funktioniert gut, außer dass es sich bei Chrome- oder Chrome / Electron-basierten Apps (wie VS Code und Slack) nicht richtig verhält, da alle durchlaufen werden.
otter.pro

Anstatt den Fensterklassennamen zu verwenden, habe ich den Prozessnamen verwendet, um mit Electron-basierten Apps und Firefox / Thunderbird gut zu spielen. Skript bei gist.github.com/snmishra/794c5f41693510c46ba9bedc839696a8
Satya Mishra

7

Einige Anwendungen, die MDI implementieren, bieten Strg + Tab, um unter derselben Anwendungsinstanz zwischen "Dokumenten" zu wechseln. zB MS Office. Dies ist jedoch keine Windows-Funktion und anwendungsabhängig. Für andere Software gibt es unterschiedliche Abkürzungen. zB Firefox bietet diese Funktion nicht an, aber es gibt ein Add-On , das die Funktionalität hinzufügt.

Außerdem finden Sie hier eine Liste der in Windows verfügbaren Tastaturkürzel .

Es gibt auch Diskussionen über Tastaturkürzel in Windows.

Hoffentlich hilft das.


2
Einige Programme verwenden dazu auch (Strg) + (F6). (Fügen Sie (Umschalttaste) hinzu, um die Richtung umzukehren.)
Scott

5

Easy Windows Switcher von Neosmart macht genau das, wonach Sie suchen.

Hier ist die Beschreibung von der Easy Windows Switcher- Website

Easy Window Switcher macht das Umschalten zwischen verschiedenen Fenstern so einfach alt+`wie bei einem Mac. Vergessen mit sich zu alt+tabzwischen einer Million-und eine andere offene Fenster , das finden Sie suchen, mit Easy - Fenster Switcher, der Tabulatortaste zwischen den Fenstern des gleichen Programms ist nur ein alt+`weg.


1
funktioniert nicht "immer". Wenn ich einige Zeit an einer anderen Anwendung arbeite und dann zurückkomme, funktioniert sie nicht mehr.
Dushyant Bangal

4

VistaSwitcher ermöglicht oder für diese Funktion. Es ist kompatibel mit Windows 10 (obwohl der Name etwas anderes vorschlägt). Unter Windows 8 und höher empfehle ich, der Ausschlussliste bestimmte Metro-Apps hinzuzufügen.

Die beste Antwort ist gut, funktioniert jedoch nicht bei Konfigurationen mit mehreren Monitoren, bei denen die Taskleiste so eingestellt ist, dass nur Symbole auf dem aktiven Monitor angezeigt werden.


Win + n funktioniert auf meinem W7-System mit mehreren Bildschirmen und der Taskleiste, die nur auf dem Hauptmonitor angezeigt wird. Ist dies Ihre Absicht oder gibt es eine Möglichkeit, die Taskleiste auf den derzeit aktiven Monitor umzuschalten (was meiner Meinung nach ablenkend wäre)? ?
Lebenita


1

Auch mit AutoHotkey ein natürlicheres Verhalten:

; 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

1

Ich habe ein AutoHotkey-Skript erstellt, um zwischen den Fenstern derselben Anwendung zu wechseln, die mit normalen Windows- Apps , Chrome-Verknüpfungen und Chrome-Apps funktionieren .

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

Extra

In diesem Github-Repository gibt es ein weiteres AutoHotkey-Skript, das gut mit diesem zusammenarbeiten kann, da Sie Ihre Apps mit den gewünschten Tastenkombinationen öffnen, wiederherstellen oder minimieren können.

Beispiel:

  • F7:: OpenOrShowAppBasedOnExeName("C:\Windows\System32\SnippingTool.exe")
  • F8:: OpenOrShowAppBasedOnWindowTitle("Gmail", "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --app=https://mail.google.com/mail/")

1
Dies ist die einzige Antwort, die in Chrome korrekt funktioniert, da Chrome und Electron-basierte Apps nicht gleich behandelt werden. Es funktioniert perfekt auf Chrome, VS Code, Slack usw. (In seltenen Fällen wurde es auf bestimmten Apps wie Mintty / Cygwin, gVim und manchmal auf Powershell nicht korrekt ausgeführt, wenn der Fenstertitel geändert wurde)
Otter. pro

0

Ich habe ein AutoHotkey- Skript erstellt, das sich gut in Windows Task Switcher ( Alt+ Tab) integrieren lässt und alle Vorteile bietet: Vorschau von App-Fenstern, Auswahl durch Klicken, Pfeiltastennavigation, nur das gewünschte einzelne Fenster aktivieren. Rufen Sie / navigieren Sie mit Alt+ `und Alt+ Shift+ `(Backtick), um zwischen Fenstern mit demselben Prozessnamen wie das aktuelle Fenster zu wechseln. Ich finde das nützlicher als Win+, numda es für jede App funktioniert (anstatt sich die festgelegte Slot-Nummer merken zu müssen), die Fenstervorschau größer ist, der Hintergrund nicht unscharf wird und sich nahtlos in die Alt+ TabNavigation einfügt. Getestet unter Windows 10.

Der Haupttrick besteht darin, Nicht-Ziel-Anwendungsfenster vorübergehend vor dem Task Switcher auszublenden, indem Sie sie WS_EX_TOOLWINDOWein- und ausschalten WS_EX_APPWINDOW. Um diese Windows-Stile auf als Administrator ausgeführten Fenstern festzulegen, muss AutoHotkey signiert oder als Administrator ausgeführt werden . Ich folgte die sehr einfach Unterzeichnung Anweisungen hier .

Einige verwandte Themen, die dazu beigetragen haben:

!`::
{
   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_
}


Hoppla; Unsere Änderungen wurden gekreuzt. Ich versuchte Humpty Dumpty wieder zusammenzusetzen; Bitte überprüfen Sie, ob Ihr Code so ist, wie Sie ihn gemeint haben.
Scott

0

Mit Autohotkey ist hier meine Version, die mit Chrome- und Electron-Apps funktioniert. Es wurde aus der Antwort von @ user332861 geändert , sodass es korrekt zwischen Chrome- und Electron-Apps wie Slack und Visual Studio Code unterscheidet. (Um das zu tun, benutzt es ahk_exestattdessen ahk_class)

!`::    ; Next window if using alt-backtick
    WinGet, ExeName, ProcessName , A
    WinGet, ExeCount, Count, ahk_exe %ExeName%
    If ExeCount = 1
        Return
    Else
        WinSet, Bottom,, A
        WinActivate, ahk_exe %ExeName%
return

!+`::    ; prev window, Alt+shift+backtick
    WinGet, ExeName, ProcessName , A
    WinActivateBottom, ahk_exe %ExeName%
return

0
!`::
#`::
WinGet, ExeName, ProcessName, A
WinActivateBottom, ahk_exe %ExeName%
return

Vereinfacht aus der Antwort von @ otter.pro. Dadurch werden die aktuellen Anwendungsfenster einfach rückwärts durchlaufen. Wenn Sie vorwärts blättern, können kurze Blitze anderer Fenster angezeigt werden. Da es wahrscheinlich wichtiger ist, Blitze nicht zu sehen als bidirektionales Radfahren, fahren Sie einfach nicht vorwärts. Außerdem erlaubt diese Antwort "als Alternative zu!", Da dies die Tastenkombination für die Mac-Verknüpfung ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.