web-dev-qa-db-ja.com

OS XのCmd + `のように、同じアプリケーションウィンドウを切り替えるWindows 7のショートカット

Windows 7には、特定のアプリケーションでのみウィンドウを切り替えるショートカットがありますか? OS Xのこの機能はとても気に入っています。 Windowsでこれに相当するものは何ですか?

40
jiejieup

タスクバーの最初の10個のアプリケーションの1つである場合、  (勝つ)+n、ここでnはその位置番号であり、それを選択してウィンドウを循環します。 (使用する  (ゼロ)(10番目のアプリケーションの場合)。たとえば、Windows ExplorerとInternet Explorerをタスクバーの最初の2つとして固定しているので、 +1 私のディレクトリを循環し、 +2 私のブラウザーを循環する。


いくつかの奇妙なメモ:

  • 長押しすると  数字を入力(およびリリース)します n、Windowsはタスクバーでn番目のアプリケーションを開きます。繰り返しタップ n 上記のように、プログラムのウィンドウを循環します。次のように TranslucentCloudによって示されます 、次に入力した場合 Shift+nのように、逆の順序で循環します Alt+Tab そしてCtrl+Tab、など.

    タスクバーのn番目のアプリケーションが固定されているが実行されていない場合、 +n それを開始します。

  • しかし、長押しすると  そして Shift、最初から右に入力し、 n、Windowsは、そのアプリケーションの新しいインスタンス(または少なくとも新しいウィンドウ)を起動します。既に実行されている場合でも(これは、Windows Media Playerなどの一部のアプリケーションでは失敗します。複数のウィンドウを同時に実行することはできません。)
  • +n テンキーでは動作しないようです。
47
Scott

Windows 7と8では、キーボードだけから使用できる既知のショートカットはありませんが、 Ctrl 興味のあるアプリのタスクバーアイコンをクリックします。これを行うたびに、そのアプリに属する​​別のウィンドウが前面に表示されます。

さらに、プログラム VistaSwitcher が設定されます Win+F11 そして Alt+` 現在のアプリのウィンドウを切り替える。 (ところで、そのWebサイトはWindows 8はサポートされていないと述べていますが、8.1でそれで運が良かったです。これまでに見られた唯一の問題は、検索サイドバーのようなものを開いているウィンドウとしてリストすることがあります。私は単に無視しますそれ、YMMV。)

24
echristopherson

AutoHotkeyを使用できます: www.autohotkey.com

そして、このスクリプトをそこに置きます:

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

私にとってはとてもうまくいきます。 Autohotkeyを使用して、コピー/貼り付け/元に戻す、Macのようなキーも作成しました。よく働く!

時代

23
Seperman

Erasmoseに感謝しますが、autohotkeyスクリプトのバージョンでは、そのタイプのウィンドウが他にない場合、ウィンドウを最小化します。わからないこともあるので、最小化するのは面倒な方法なので、スクリプトを次のように変更しました。

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

あと、最後のクラスでctrlの代わりにshiftを使用するように変更しました。これは、他のいくつかのキーボードショートカットを使用して後方に戻るための修飾子だからです。オートホットキーが大好きです。

9
user332861

MDIを実装する一部のアプリケーションは、MS Officeなどの同じアプリケーションインスタンスの下で「ドキュメント」を切り替えるためにCtrl + Tabを提供します。ただし、これはWindowsの機能ではなく、アプリケーションに依存します。他のソフトウェアの場合例えば、Firefoxはこの機能を提供していませんが、機能を追加する add-on があります。

さらに、Windowsで提供される キーボードショートカットのリスト を以下に示します。

また、Windowsのキーボードショートカットについて 既存のディスカッション があります。

お役に立てば幸いです。

7
Nishant Sharma

Easy Windows Switcher Neosmartが提供するのは、まさにあなたが求めていることです。

Easy Windows Switcher ウェブサイトからの説明です。

Easy Window Switcherにより、異なるウィンドウ間の切り替えが簡単に alt+` (これはalt + backtickです)Macのようなものです。 alt+tab何百万もの異なる開いているウィンドウ間で、探しているウィンドウを見つけることができます。EasyWindow Switcherを使用すると、同じプログラムのウィンドウ間をタブで移動するだけです。 alt+` 離れて。

5
Ishan

VistaSwitcherはこの機能を許可します。その名前はWindows 10と互換性があります(ただし、名前はそうではありません)。 Windows 8以降では、特定のMetroアプリを除外リストに追加することをお勧めします。

一番良い答えは良いですが、アクティブモニターにアイコンのみを表示するようにタスクバーが設定されているマルチモニター設定では機能しません。

4
Janac Meena

AutoHotkeyスクリプトを作成して、通常のウィンドウアプリで動作する同じアプリケーションのウィンドウを切り替えるChromeショートカットおよびChrome Apps

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

追加

その中に Github repo 必要なホットキーを使用してアプリを開いたり、復元したり、最小化したりできるため、これと連携してうまく機能する別のAutoHotkeyスクリプトがあります。

例:

  • 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/")
3
Juanma Menendez

AutoHotkeyでも、より自然な動作:

; 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

スコット( https://superuser.com/users/150988/scott )が共有したものに加えて:

ctrl+repeatedly click タスクバーのアプリアイコンの上でも、仕事をします。

1
Nestor Waldyd

私はAutoHotkeyスクリプトを作成し、Windowsタスクスイッチャー(Alt+Tab)、そのすべての利点を提供します:アプリウィンドウのプレビュー、クリックして選択、矢印キーナビゲーション、必要な単一のウィンドウのみをアクティブ化します。呼び出し/ナビゲート Alt+` そして Alt+Shift+` (バックティック)現在のウィンドウと同じプロセス名を持つウィンドウ間を循環します。私はこれがより使いやすいと思います Win+num どのアプリでも機能するため(固定されたスロット番号を覚えておく必要はありません)、ウィンドウのプレビューが大きくなり、背景がぼやけず、シームレスにミックスされます Alt+Tab ナビゲーション。 Windows 10でテスト済み。

主なトリックは、WS_EX_TOOLWINDOWを設定し、WS_EX_APPWINDOWを設定解除することで、非対象のアプリケーションウィンドウをタスクスイッチャーから一時的に非表示にすることです。管理者として実行しているウィンドウでこれらのウィンドウスタイルを設定するには、AutoHotkeyに署名するか、adminとして実行する必要があります。私は非常に簡単な署名手順 ここ に従いました。

貢献したいくつかの関連スレッド:

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

CtrlWin[Number] (Windows 10でテスト済み)

これは私が何とか考え出した組み込みソリューションです。

他の回答との違い:

いつ Win[Number] なしで使用されます Ctrl、それは常に最初のウィンドウから始まります。これは私が本当にたいと思うものではありません。

サードパーティのソフトウェアは必要ありません。

マウスをクリックする必要はありません。

0
Taylan

オートホットキーを使用して、これが私のバージョンです。ChromeとElectronアプリで動作します。 @ user332861 の回答から変更され、ChromeとSlackやVisual Studio CodeなどのElectronアプリを正しく区別できるようになりました。 (これを行うには、ahk_exeではなく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
otter.pro
!`::
#`::
WinGet, ExeName, ProcessName, A
WinActivateBottom, ahk_exe %ExeName%
return

@ otter.proの回答から簡略化。これは単に、現在のアプリケーションウィンドウを逆方向に循環します。順方向に循環すると、他のウィンドウが一瞬点滅することがあります。フラッシュを見ないことが双方向サイクリングよりもおそらく重要であるため、前方にサイクリングしないでください。さらに、この回答は# `を!`の代わりとして使用できるため、これはMacショートカットのキーの組み合わせです。

0
cjfp