Есть ли в Windows 7 ярлык для переключения между окнами только в данном приложении? Мне очень нравится эта функция в OS X; каков его эквивалент в Windows?
10 ответов
Если это одно из первых девяти приложений на панели задач, то (Win)+n, где n - номер позиции, выберет его и переключится между окнами. Например, у меня есть Windows Explorer и Internet Explorer, прикрепленные как первые две вещи на моей панели задач, поэтому я могу использовать +1, чтобы перебрать мои каталоги и +2, чтобы перебрать мои браузеры.
В Windows 7 и 8, хотя я не знаю доступных ярлыков на одной только клавиатуре, вы можете удерживать нажатой клавишу Ctrl , щелкая значок на панели задач интересующего вас приложения. Каждый раз, когда вы делаете это, на передний план выходит другое окно, принадлежащее этому приложению.
Кроме того, программа VistaSwitcher устанавливает Win+F11 и Alt+`для переключения между окнами текущего приложения. (Кстати, на его веб-сайте написано, что Windows 8 не поддерживается, но мне повезло с версией 8.1; единственная проблема, которую я видел до сих пор, заключается в том, что иногда она отображает такие вещи, как боковая панель поиска, как открытые окна). Я просто игнорирую это, но YMMV.)
Вы можете использовать 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. Работает отлично!
Eras
Спасибо, 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
о, и я также изменил последний класс, чтобы использовать shift вместо ctrl, так как я - это модификатор, чтобы вернуться назад с несколькими другими сочетаниями клавиш. Я люблю автогонки.
Некоторые приложения, которые реализуют MDI, предоставляют Ctrl+Tab для переключения между "Документами" в одном экземпляре приложения. например MS Office. Но это не функция Windows, а зависит от приложения. Для других программ существуют разные ярлыки. Например, Firefox не предоставляет эту функцию, но есть дополнение, которое добавляет функциональность.
Кроме того, вот список сочетаний клавиш в Windows.
Также существуют дискуссии о сочетаниях клавиш в Windows.
Надеюсь, это поможет.
Easy Windows Switcher от Neosmart делает именно то, что вам нужно.
Вот описание с сайта Easy Windows Switcher
Easy Window Switcher позволяет переключаться между различными окнами так же просто, как alt+` (это alt+backtick), как на Mac. Забудьте о необходимости
alt+tab
между миллионами и одним открытым окном, чтобы найти то, что вы ищете, с помощью Easy Window Switcher вкладка между окнами одной и той же программы находится всего в Alt +` .
VistaSwitcher позволяет или для этой функции. Он совместим с Windows 10 (хотя название предполагает иное). На Windows 8 и выше я предлагаю добавить определенные приложения метро в список исключений.
Верхний ответ - хороший, но он не работает на настройках нескольких мониторов, где на панели задач установлено отображение только значков на активном мониторе.
С 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+несколько раз нажмите на значок приложения на панели задач и также сделает эту работу.
Я создал скрипт AutoHotkey, который прекрасно интегрируется с Windows Task Switcher (Alt+Tab), предоставляя все его преимущества: предварительный просмотр окон приложения, щелчок, чтобы выбрать, навигация по клавишам со стрелками, активировать только одно окно, которое вы хотите. Вызывайте / перемещайтесь с помощью Alt+` и Alt+Shift+` (backtick), чтобы переключаться между окнами, имеющими то же имя процесса, что и текущее окно. Я считаю, что это более удобно, чем Win+num, так как оно работает для любого приложения (вместо того, чтобы запоминать номер закрепленного слота), превью окна больше, фон не размыт и плавно смешивается с навигацией Alt+Tab . Проверено на Windows 10.
Основная хитрость заключается в том, чтобы временно скрыть окна нецелевых приложений от переключателя задач, установив WS_EX_TOOLWINDOW
и WS_EX_APPWINDOW
. Чтобы установить эти стили окон в окнах, работающих от имени администратора, AutoHotkey должен быть подписан или запущен от имени администратора . Я следовал очень простым инструкциям по подписанию здесь .
Некоторые связанные темы, которые внесли свой вклад:
- https://stackoverflow.com/questions/35971452/what-is-the-right-way-to-send-alt-tab-in-ahk
- https://autohotkey.com/board/topic/21657-alttab-window-list-get-a-list-of-alt-tab-windows/
!`::
{
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_
}