Как сделать свернутое окно активным

Обновлено: 17.05.2024

"A good example is a debugger when it hits a breakpoint."


Добавлено
не работает, причем честно об этом говорит (

Сначала нужно вызвать

SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);

Зтем можно вызывать SetForegroundWindow.

Но это несовсем корректная техника. Для того и изменили поведение функции SetForegroundWindow, чтобы некоторые не доставали своими выскакивающими табличками.

сначала сворачиваем нашу прогу
Application.Minimize;

если "сворачивали в трей", то
if not IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_SHOW);

ну и восстанавливаем.
Application.Restore;
а уже при ресторе окно вылазит вперёд

кстати, если кто-то предложит лучший метод (без Minimize), буду очень благодарен

Что значит что с ним что без него?
Функция SystemParametersInfo вообще отработала корректно или ты не проверял на предмет ошибки?

Так вот если не проверял то проверь. Это делается с помощью GetLastError если функция SystemParametersInfo вернёт тебе ноль.

Если же функция отработала успешно, то вызови её же но с параметром SPI_GETFOREGROUNDLOCKTIMEOUT и убедись что она возвратит ноль.

После корректного вызова этой функции и установки свойства SETFOREGROUNDLOCKTIMEOUT в ноль система будет сразу делать окно активным с помощью SetForegroundWindow. Система не будет вызывать функцию FlashWindowEx.

я не знаю, какие у вас винды, а уменя WinXp.
под Win2000 всё точно так же.

Да, такая ситуация тоже возможна и она является штатной. Если текущий foreground-процесс вызвал функцию LockSetForegroundWindow.

Согласен что нужно. Но это просто один из вариантов как всё-таки сделать своё окно поверх всех, даже тогда когда никто этого нехочет и всеми средствами препятствует этому. Появится активное системное модальное окно, а после его закрытия уже делай основым то из своих окно которое необходимо.

На некорректные параметры такую ошибку система не выдаст. С параметрами у него судя по всему всё в порядке. А вот поотключать все лишние запущенные приложения попробовать стоит. Фалит из-за одного из них.

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

  • Alt + Tab. Нажмите и удерживайте Alt, потом нажимайте Tab. На появившейся панели появятся превью открытых у вас окон, активное будет меняться по нажатию Tab.
  • Ctrl + Alt + Tab. Переключатель окон автоматически закрывается, когда вы отпускаете Alt, но эта комбинация делает его постоянно открытым. Он исчезнет, только когда вы выберете нужное окно клавишами-стрелками и нажмёте Enter.
  • Win + Tab. Выводит на экран так называемую «Временную шкалу», где собраны все недавно открытые вами окна и документы. Здесь же можно создавать новые рабочие столы и сортировать по ним программы. Выбирать окна можно как мышью, так и стрелками с Enter.
  • Win + ↓. Сворачивает текущее окно. Если окно прикреплено к краю экрана, оно свернётся сначала в четверть. Повторное нажатие свернёт его окончательно.
  • Win + ↑. Разворачивает текущее окно. Если окно прикреплено к краю экрана, оно свернётся в четверть и перенесётся наверх.
  • Win + Shift + ↑. Разворачивает текущее окно, но только по высоте, не ширине.
  • Win + ← или →. Переносит окно к левому или правому краю экрана соответственно.
  • Alt + Space. Открывает меню окна. С ним можно не только сворачивать и закрывать окна, но и менять размер и перемещать без помощи мыши. Нажмите Alt + Space, выберите клавишами «Переместить», нажмите Enter и двигайте окно стрелками. Этот приём сработает, даже если окно оказалось за пределами экрана.
  • Win + M. Сворачивает все окна.
  • Win + D. Сворачивает вообще все окна. Работает даже на тех, где нет кнопки свернуть.
  • Win + Home. Сворачивает всё, кроме активного окна. Полезно, если нужно сосредоточиться на чём-то одном.
  • Win + Shift + M. Разворачивает все окна обратно.

Теперь вы сможете комфортно работать, даже если у вас неудобный тачпад и нет мыши. Пробуйте.

Несмотря на то, что мышь является удобным и основным инструментом для работы в Windows, организация рабочего пространства с ее помощью может оказаться утомительной. К счастью, вы можете использовать множество сочетаний клавиш для переключения между окнами, их минимизации, привязки, разворачивания, перемещения или изменения размера окон.

Горячие клавиши Windows для работы с окнами

Переключение между окнами в Windows

Windows 10 имеет очень удобный инструмент, часто называемый «переключатель задач». Он позволяет использовать клавиатуру для быстрого переключения между активными окнами. Просто нажмите Alt + Tab в любое время работы с Windows и на экране появятся миниатюры всех открытых окон.

Для циклического перехода между вариантами нажмите и удерживайте Alt и нажимайте клавишу Tab, пока не будет выделено нужное окно. Отпустите обе клавиши, и окно будет выведено на передний план.

Переключение между окнами в Windows

Вы также можете нажать Ctrl + Alt + Tab, чтобы открыть переключатель задач. При вводе такой комбинации окно с задачами остается постоянно висеть даже после отпускания клавиш. Вам остается лишь с помощью кнопок курсора выбрать нужное окно и нажать «Ввод». Переключатель исчезнет.

Более сложным способом переключения между окнами является Представление задач. Оно занимает практически весь экран и показывает большие превью всех открытых окон. Чтобы открыть Представление задач, нажмите Windows + Tab.

Переключение между окнами в Windows

С помощью клавиш курсора выберите окно, которое вы хотите просмотреть, а затем нажмите «Ввод». Выбранное вами окно выведется на передний план. В Представлении задач можно создавать новые рабочие столы и сортировать по ним программы.

Как свернуть и развернуть окна в Windows при помощи «горячих» клавиш

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

Используйте следующие сочетания клавиш:

  • Свернуть текущее окно:Windows + Стрелка вниз.
  • Развернуть текущее окно на весь экран: Windows + Стрелка вверх.
  • Свернуть все окна: Windows + M.
  • Свернуть все окна и показать рабочий стол: Windows + D. (Это работает и с окнами, которые напрямую свернуть нельзя).
  • Свернуть все окна, кроме текущего активного: Windows + Home. Очень полезно, когда требуется сосредоточиться на работе с одним окном.
  • Восстановление всех свернутых окон:Windows + Shift + M.

Вы также можете увеличить окно, не полностью его разворачивая. Если вы хотите растянуть высоту (но не ширину) текущего окна до верха и низа экрана, нажмите Windows + Shift + Стрелка вверх. Обратите внимание, что эта комбинация не работает, если окно привязано к четверти экрана, о чем мы расскажем ниже.

Как привязать окна к половине или четверти рабочего стола в Windows

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

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

Затем вы можете использовать следующие сочетания клавиш, чтобы расположить два окна пополам:

Развернуть слева: Windows + Стрелка влево.

Как привязать окна к половине или четверти рабочего стола в Windows

Развернуть справа: Windows + Стрелка вправо.

Как привязать окна к половине или четверти рабочего стола в Windows

Чтобы расположить четыре окна по четвертям (каждое будет занимать 1/4 экрана), вы можете использовать последовательность из двух комбинаций клавиш. Эти последовательности предполагают, что окно еще не было привязано к левой или правой половине экрана.

Вот что нужно сделать:

Верхняя левая четверть: Windows + Стрелка влево, а затем Windows + Стрелка вверх.

Нижняя левая четверть: Windows + Стрелка влево, а затем Windows + Стрелка вниз.

Как привязать окна к половине или четверти рабочего стола в Windows

Верхняя правая четверть: Windows + Стрелка вправо, а затем Windows + Стрелка вверх.

Как привязать окна к половине или четверти рабочего стола в Windows

Нижняя правая четверть: Windows + Стрелка вправо, а затем Windows + Стрелка вниз.

Точное перемещение окна в Windows

Вы можете использовать клавиатуру, чтобы переместить определенное окно в нужное место на экране. Сначала нажмите Alt + Tab, чтобы выбрать окно, которое вы хотите переместить.

Когда окно выбрано, нажмите Alt + Пробел, чтобы открыть небольшое меню в верхнем левом углу. Нажмите клавишу курсора Вниз, чтобы перейти на «Переместить», а затем нажмите «Ввод».

Используйте клавиши курсора со стрелками, чтобы переместить окно туда, где оно должно расположиться в конечном счете на экране, а затем нажмите «Ввод».

Этот прием работает, даже если окно, которое вы хотите переместить, скрыто или оказалось за пределами экрана, и вы не можете найти его с помощью мыши.

Перемещение окон между дисплеями в Windows

Если вы используете несколько мониторов и развернули рабочий стол между ними, вы можете быстро перемещать активное окно между экранами. Для этого нажмите Windows + Shift + Стрелку влево или Windows + Shift + Стрелку вправо.

Шпаргалка по управлению окнами в Windows

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

Alt + Tab: открыть переключатель задач.

Windows + Tab: Открыть Представление задач.

Windows + Стрелка вниз: свернуть окно.

Windows + Стрелка вверх: развернуть окно.

Windows + M: свернуть все окна.

Windows + D: отображение рабочего стола.

Windows + Home: свернуть все окна, кроме активного.

Windows + Shift + M: восстановить все свернутые окна.

Windows + Shift + Стрелка вверх: растянуть окно к верхней и нижней части экрана.

Windows + Стрелка влево: развернуть окно в левой части экрана.

Windows + Стрелка вправо: развернуть окно в правой части экрана.

Windows + Shift + Стрелка влево или вправо: перемещение окна с одного монитора на другой.

Я проверил предыдущий вопрос здесь, но, к сожалению:

  1. DeskPin в основном не работает с Windows 8, и все еще не работает в Windows 10 не обновлялся с 2002 года и, похоже, не работает в Windows 10
  2. AutoHotKey и AlwaysOnTopMaker требует клавиатуры, нет визуальной индикации того, что окно помечено как всегда сверху или нет

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

WindowPinner делает это лучше, но он все еще включает в список не запущенные программы.

Есть ли какое-либо решение, которое работает в графическом интерфейсе без использования клавиатуры, например, долгое нажатие / щелчок правой кнопкой мыши в строке заголовка и выбор «Всегда сверху»? Если вы привыкли к Ubuntu Linux, вы знаете эту функциональность.

Dexpot делает это, он позволяет "Умное использование заголовков":

Строка заголовка, а также кнопки «Свернуть», «Развернуть» и «Закрыть» могут быть назначены с помощью других функций (Роллинг вверх, Свернуть в системный трей и т.д.).

Всегда на вершине это одна из функций. Вы можете, например, щелкнуть правой кнопкой мыши по кнопке максимизации, чтобы активировать всегда сверху.

Загрузите установщик AlwaysOnTop и установите его (выберите последний выпуск). Запустите приложение из Пуск -> Все программы -> AlwaysOnTop. Он сидит в системном трее. Нажмите на иконку в трее, нажмите "AlwaysOnTop", а затем нажмите на окно, которое вы хотите остаться сверху (курсор будет крестиком в ожидании окна).

Это не относится к первоначальному вопросу ОП, но кажется хорошим местом для обмена информацией об утилитах «всегда на вершине», даже если для этого требуется несколько щелчков мышью.

С точки зрения программирования, написание такой простой утилиты - очень простое упражнение. Может быть, поэтому есть так мало решений, или, возможно, почему так много доморощенных.

Мне трудно доверять утилитам, загруженным с чьего-либо аккаунта Google Drive или Dropbox. Но я доверяю Нир Софер из Nirsoft. У него есть крошечное приложение под названием WinLister, где мы можем установить окно, которое будет всегда сверху. Это не очень удобно для пользователя, если вы делаете это часто, но мне только иногда нужно прикрепить окно к вершине, так что это работает для меня.

Я использую VirtuaWin уже много лет для этого. Это позволяет мне щелкнуть средней кнопкой мыши на строке заголовка любого окна, чтобы оно оставалось «всегда сверху». Отлично работает на win 10. Бесплатный, с открытым исходным кодом.

Возможно, это не совсем соответствует запросу OP, но Stick-It! является отличным вариантом для сохранения некоторых Windows поверх других.

Окна выбираются так, чтобы они оставались наверху, щелкая правой кнопкой мыши на значке в системном трее, который устанавливает программа, выбирая «Stick-It!", а затем просто нажмите в любом месте окна выбора, которое покачивает окно из стороны в сторону на секунду или две.

Есть ли какое-либо решение, которое работает в графическом интерфейсе без использования клавиатуры, например, долгое нажатие / щелчок правой кнопкой мыши в строке заголовка и выбор «Всегда сверху»? Если вы привыкли к Ubuntu Linux, вы знаете эту функциональность.

Есть несколько функций в вашем распоряжении. Доступ к ним осуществляется из нового меню, прикрепленного к строке заголовка каждого окна. Опции меню появляются только при наведении курсора, и контейнер можно перемещать по строке заголовка.

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

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

4 ответа 4

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

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

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

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

Решение состоит в том, чтобы использовать Alt + Esc

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

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

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

Раймонд Чен обсуждает горячие клавиши Alt + Tab и Alt + Esc

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

Сценарий

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

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

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

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

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

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

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

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

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

Читайте также: