Чи є ярлик у 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запустить її.
У Windows 7 і 8, хоча немає ярлика, який я знаю, доступного лише з клавіатури, ви можете утримувати Ctrl, натискаючи значок панелі завдань цікавого додатка. Кожен раз, коли ви це зробите, інше вікно, що належить цьому додатку, буде вийти на перший план.
Крім того, програма VistaSwitcher встановлює Win+ F11і Alt+ `для перемикання між вікнами поточного додатка. (BTW, його веб-сайт говорить, що 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
Для мене це дуже добре працює. Використовуючи функцію автоматичної клавіші, я також зробив свої копії / вставки / скасування, ... клавіші, як Mac. Чудово працює!
Ера
WinGet, List
повертає кількість вікон у List
змінній (на відміну від List%n%
псевдомарину, в якому зберігаються ручки), тож ви можете пропустити WinGet, WinClassCount
виклик і перевірити його List
. Також код здається однаковим для обох гарячих клавіш.
Дякую, Erasmose, але твоя версія сценарію автоматичної клавіші зменшить вікно, якщо немає інших вікон цього типу. Іноді ви цього не знаєте, а мінімізація - це дратівливий спосіб дізнатися, тому я змінив ваш сценарій так:
!`:: ; 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 від Neosmart робить саме те, що вам потрібно.
Ось опис веб-сайту Easy Windows Switcher
Easy Window Switcher дозволяє легко переключатися між різними вікнами alt+`( як це alt + backtick), як на Mac. Забудьте відмітити
alt+tab
між мільйонами і одним різними відкритими вікнами, щоб знайти саме те, що шукаєте, за допомогою програми Easy Wit 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 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/")
Я створив сценарій AutoHotkey, який чудово інтегрується з перемикачем завдань Windows ( Alt+ Tab), надаючи всі його переваги: попередній перегляд вікон додатків, натисніть, щоб вибрати, навігація зі стрілками, активуйте лише одне вікно, яке ви хочете. Викликати / переходити з Alt+ `та Alt+ Shift+ `(backtick) для переходу між вікнами, що мають таку ж назву процесу, що і поточне вікно. Я вважаю це більш корисним, ніж Win+, numоскільки воно працює для будь-якого додатка (замість того, щоб запам'ятовувати зафіксований номер слота), попередній перегляд вікон більший, фон не розмивається, і він плавно змішується з Alt+ Tabнавігацією. Тестовано на Windows 10.
Основна хитрість - тимчасово приховати нецільові вікна програм від перемикача завдань, встановивши WS_EX_TOOLWINDOW
та вимкнувши WS_EX_APPWINDOW
. Для того, щоб встановити ці стилі Windows на Windows, які працюють як адміністратор, 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.