Есть ли в Windows 7 ярлык для переключения между окнами только в данном приложении? Мне очень нравится эта функция в OS X; каков его эквивалент в Windows?
Есть ли в Windows 7 ярлык для переключения между окнами только в данном приложении? Мне очень нравится эта функция в OS X; каков его эквивалент в Windows?
Ответы:
Если это одно из первых десяти приложений на панели задач, то (Win)+ n, где n - это номер его позиции, выберет его и переключится между окнами. (Используйте 0(ноль) для десятого приложения.) Например, у меня Windows Explorer и Internet Explorer закреплены как первые две вещи на моей панели задач, поэтому я могу использовать + 1для циклического перемещения по моим каталогам и + 2для циклического перемещения по моим браузерам.
Некоторые странные заметки:
Если нажать и удерживать и ввести (и отпустить) цифру n, Windows откроет n- е приложение на панели задач. Повторное нажатие n будет циклически перемещаться по окнам этой программы, как обсуждалось выше. Как сказано в TranslucentCloud , если вы затем наберете Shift+ n, он будет циклически перебирать их в обратном порядке, как с Alt+ Tab и Ctrl+ Tabи т. Д.
Если n- е приложение на панели задач закреплено, но не запущено, + nзапустит его.
В Windows 7 и 8, хотя я не знаю доступных ярлыков на одной только клавиатуре, вы можете удерживать нажатой Ctrlиконку на панели задач интересующего вас приложения. Каждый раз, когда вы делаете это, появляется другое окно, принадлежащее этому приложению. выйти на первый план.
Кроме того, программа VistaSwitcher устанавливает Win+ F11и Alt+ `для переключения между окнами текущего приложения. (Кстати, на его веб-сайте написано, что Windows 8 не поддерживается, но мне повезло с ней под 8.1; единственная проблема, которую я видел до сих пор, - это то, что иногда она отображает такие вещи, как боковая панель поиска как открытые окна. что, но YMMV.)
alt-tab terminator
больше не имеет возможности
Вы можете использовать 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
WinGet, List
возвращает количество окон в List
переменной (в отличие от List%n%
псевдосетки, в которой хранятся дескрипторы), поэтому вы можете пропустить WinGet, WinClassCount
вызов и проверить List
вместо этого. Кроме того, код кажется одинаковым для обеих горячих клавиш.
Спасибо, 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 и выше, я предлагаю добавить определенные приложения метро в список исключений.
Верхний ответ - хороший, но он не работает на настройках нескольких мониторов, где на панели задач установлено отображение только значков на активном мониторе.
В дополнение к тому, что Скотт ( https://superuser.com/users/150988/scott ) поделился:
ctrl+ repeatedly click над значком приложения на панели задач также сделает работу.
С 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
Я создал сценарий AutoHotkey для переключения между окнами и того же приложения, что работа с регулярным окна приложения , Chrome ярлыков и приложений Chrome .
В этом репозитории Github есть еще один скрипт 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/")
Я создал скрипт AutoHotkey, который прекрасно интегрируется с Windows Task Switcher ( Alt+ Tab), предоставляя все его преимущества: предварительный просмотр окон приложения, щелчок для выбора, навигация по клавишам со стрелками, активация только одного нужного окна. Вызывайте / перемещайтесь с помощью Alt+ `и Alt+ Shift+ `(backtick), чтобы переключаться между окнами, имеющими то же имя процесса, что и текущее окно. Я считаю, что это более удобно, чем « Win+», так numкак оно работает для любого приложения (вместо того, чтобы запоминать номер закрепленного слота), окна предварительного просмотра больше, фон не размыт, и он плавно смешивается с Alt+ Tabнавигацией. Проверено на Windows 10.
Основная хитрость заключается в том, чтобы временно скрывать окна нецелевых приложений от переключателя задач путем установки WS_EX_TOOLWINDOW
и отмены настройки WS_EX_APPWINDOW
. Чтобы установить эти стили окон в окнах, работающих от имени администратора, AutoHotkey должен быть подписан или запущен от имени администратора . Я следовал очень простым инструкциям по подписанию здесь .
Некоторые связанные темы, которые внесли свой вклад:
!`::
{
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_
}
Используя Autohotkey, вот моя версия, которая работает с приложениями Chrome и Electron. Он был изменен из ответа @ user332861 , так что он правильно различает приложения Chrome и Electron, такие как Slack и Visual Studio Code. (Для этого он использует 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
!`::
#`::
WinGet, ExeName, ProcessName, A
WinActivateBottom, ahk_exe %ExeName%
return
Упрощено от ответа @ otter.pro. Это просто циклически перебирает текущие окна приложения. Повторное движение вперед может вызвать кратковременное мигание других окон. Поскольку не видеть вспышки, вероятно, более важно, чем двунаправленный цикл, просто не двигайтесь вперед. Кроме того, этот ответ допускает # `в качестве альтернативы!`, Так как это комбинация клавиш для ярлыка Mac.