Предотвратить Alt + Tab от переключения на свернутые окна

2806
kofifus

Я смотрел на различные решения этого, но ни один не работал.

Как я могу предотвратить Alt+ Tabв Windows 10 от переключения на свернутые окна?

5

4 ответа на вопрос

3
phuclv

Решение заключается в использовании Alt+Esc

Он переключится на следующее открытое окно, пропуская свернутые окна. Что еще более важно это работает, даже если Windows Shell зависает и Alt+ Tabперестает работать

К сожалению, со всем этим волнением, приложенным к Alt+ Tab, еще одна горячая клавиша была удручающе проигнорирована. В Windows 2.0 введена горячая клавиша Alt+ Esc. Принимая во внимание, что Alt+ Tabпозволяет вам выбрать приложение, Alt+ Escпозволяет вам переключаться между ними.

Когда вы нажимаете Alt+ Esc, активное окно отправляется в конец стека окон, позволяя окну под ним в z-порядке стать новым активным окном. И если следующее окно является свернутым, оно остается свернутым. Хотя это может звучать как раздражение, на самом деле это полезное устройство, поскольку оно позволяет пропускать свернутые приложения без необходимости открывать их.

Raymond Chen Обсуждает Alt+ Tabи Alt+ EscHotkeys

проблема в том, что я не могу переключаться между двумя окнами с помощью Alt + Esc kofifus 7 лет назад 1
Да, я забыл об Alt-Esc, я склонен использовать Alt-Tab и Alt-Shift-Tab для перемещения назад / вперед, вековая привычка. Эта последовательность работает для меня между двумя окнами (к сожалению, независимо от статуса минимизации). PeteG 7 лет назад 0
@kofifus вы можете использовать Alt + Esc и Alt + Shift + Esc для переключения назад и вперед. В противном случае вам понадобится скрипт autohotkey phuclv 7 лет назад 1
3
Lexikos

Следующий скрипт для AutoHotkey v1.1 исправляет эту проблему, обнаруживая, когда какое-либо окно свернуто, и перетягивая его к концу списка alt-tab, временно изменяя стили окна. Сценарий выполняется в фоновом режиме и не требует использования определенной горячей клавиши (или любой горячей клавиши).

; Use a shell hook to detect minimize and fix the alt-tab order. OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), "ShellHook") DllCall("RegisterShellHookWindow", "ptr", A_ScriptHwnd)  ShellHook(wParam, lParam) { if (wParam != 0x5) ; HSHELL_GETMINRECT return hwnd := NumGet(lParam+0) WinGet minmax, MinMax, ahk_id %hwnd% if (minmax = -1) ; Minimized { ; Remove the window from the alt-tab list temporarily to force ; it to the end of the list. To do this, temporarily apply the ; WS_EX_TOOLWINDOW style and remove WS_EX_APPWINDOW (if present). WinGet oldxs, ExStyle, ahk_id %hwnd% newxs := (oldxs & ~0x40000) | 0x80 if (newxs != oldxs) { WinSet ExStyle, % newxs, ahk_id %hwnd% WinSet ExStyle, % oldxs, ahk_id %hwnd% } } } 

Предостережение: это может оказать неблагоприятное влияние на некоторые окна, поскольку оно изменяет атрибут расширенного стиля окна (временно). Я не заметил никаких проблем во время тестирования.

Я обнаружил, что временное удаление окна из alt-tab переместило его почти в конец списка. Если я сверну несколько окон подряд, первое появится последним, каждое последующее свернутое окно будет вставлено перед остальными (но после всех остальных окон).

Я тестировал на Windows 10 v1709. Результаты могут отличаться в других системах.

Большой ! Могу ли я подключить это, чтобы заменить существующее Alt + Tab? как ? kofifus 6 лет назад 0
Он не «заменяет Alt + Tab». Как я объяснил, он управляет окнами. Вы просто запускаете скрипт, используя AutoHotkey v1.1. По сути, установите AutoHotkey, сохраните текст скрипта в виде файла с расширением `.ahk`, откройте файл. Если это работает, добавьте его в систему при помощи любого метода. Lexikos 6 лет назад 0
2
Tomer Godinger

Я согласен с тем, что предложил @ LưuVĩnhPhúc, и я решил написать короткий скрипт AutoHotkey, который делает это более или менее.

Сценарий

forward := true cycling := false  ~Alt Up:: if cycling forward := !forward cycling := false return  !Tab::Cycle(forward) !+Tab::Cycle(!forward)  Cycle(direction) { global cycling if direction { send ! } else { send !+ } cycling := true }  !Escape::!Tab 

Установите программу, поместите ее в .ahkфайл и запустите. Он установит Alt+ Tabдля использования Alt+ Escapeи Alt+ Shift+ Escapeпопеременно, чтобы вы могли переключаться назад и вперед. В последней строке указывается, что Alt+ Escapeработает как обычный Alt+ Tab, если вы хотите иметь доступ к этой функции. Вы можете удалить его, если хотите.

Предостережения

  1. Этот сценарий изменяет Alt+ Tabна Alt+ Escapeили Alt+ Shift+ Escape, изменяя его направление всякий раз, когда вы отпускаете Altклавишу после переключения окон (т.е. также нажатия Tab) по крайней мере один раз.

    Это не меняет механизм позади Alt+ Escape, поэтому, если вы удерживаете Altи нажимаете Tabдважды, вы можете не попасть во второе, предшествующее последнему окну, в котором вы были. Также, когда направление «обратное», вы можете получить «старые» окна ( окна, которые вы не использовали в течение некоторого времени) до того, как вы получите последние, за исключением последнего окна, на которое вы переключились; Вы получите это (это единственная причина, по которой я сделал этот переворот в первую очередь).

  2. Ctrl+ Alt+ Tabвсе еще сохраняет свою первоначальную функцию - то есть использует обычный механизм Alt+ Tab. Понятия не имею, что вы хотите с этим сделать.

Более сложная альтернатива

Другой вариант - написать программу, которая может скрыть все свернутые в данный момент окна и восстановить их, затем использовать AutoHotkey, чтобы заставить Alt+ Tabактивировать эту программу, чтобы скрыть все свернутые окна, прежде чем пропустить Alt+ Tab, а затем снова показать их при отпускании. Altпосле переключения окон (нет необходимости делать это, если вы нажмете Altпо другим причинам).

Однако это требует больше работы, и это приведет к тому, что ваши открытые приложения на панели задач изменятся при переключении окон и будут отменены при остановке, что может выглядеть странно.

Если вы решите сделать это, я предлагаю вам обратить внимание не вызывать программу просто на Alt+ Tab, а только на первый раз, когда вы нажимаете эту комбинацию, так как вы удерживали нажатой Alt.

Спасибо ! но переключение между окнами с помощью двух последовательных клавиш alt + tab является для меня существенным. Можно ли написать сценарий, который охватывает это? kofifus 7 лет назад 0
Я думаю, что вы не поняли меня. Я написал этот скрипт, чтобы сделать это. Попробуйте, убедитесь сами. Tomer Godinger 7 лет назад 0
1
PeteG

Я использую второй «Виртуальный рабочий стол» для такого типа вещей, он работает очень хорошо.
Вы можете переместить приложения / окна на вторичный / третичный / ... рабочий стол, и на этом рабочем столе будет только это подмножество вкладок (я постоянно пользуюсь alt-tab, так что я вполне зациклен на вашей "проблеме").
Drag-drop работает для быстрого перемещения приложений, и есть другие ярлыки и менеджеры, если вы хотите иметь больше полупостоянных виртуальных рабочих столов для определенных задач.

спасибо, но это не то, что я ищу kofifus 7 лет назад 0

Похожие вопросы