Как сделать ahk поверх всех окон

Добавил пользователь Алексей Ф.
Обновлено: 11.09.2024

Windows не имеет встроенного способа, чтобы пользователь смог указать окну быть всегда поверх остальных (always-on-top). Для этого существует много сторонних инструментов, но они часто сложны и неудобны. Некоторые из них, просто не могут нормально работать на современной 64-разрядной версии Windows.

Мы протестировали различные инструменты и можем порекомендовать лучшие, самые надежные из них. Если вы хотите использовать сочетание клавиш или графическое меню — мы предлагаем рассмотреть идеальные способы, чтобы сделать окно поверх всех на ОС Windows.

Сочетание клавиш: AutoHotkey

Скрипты AutoHotKey являются отличным способом настройки компьютера, но могут показаться сложными на первый взгляд. Не волнуйтесь — скоро мы опубликуем руководство для начинающих по использованию AutoHotkey Script. Пока же, ограничимся вполне достаточным набором инструкций.

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

Нажмите Файл — Перезагрузить сценарий в AutoHotkey. Теперь Вы можете нажать Ctrl + Пробел, в то время как AutoHotkey работает в фоновом режиме и активное, в настоящее время, окно будет всегда поверх других окон. Нажмите Ctrl + Пробел снова и окно вернется в исходное состояние.

Настройка AutoHotkey

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

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

Это не все инструменты, которые мы протестировали. DeskPins также работает очень хорошо — программа размещает свой значок в вашем системном трее, и вы можете нажать на значок и поместить булавку на любом окне, чтобы задать его размещение поверх остальных. К сожалению, это изображение булавки остается на заголовке окна, и выглядит несколько архаично (как на Windows XP). Это отвлекает и просто не очень красиво.

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

попытка найти комбинацию клавиш и щелчков, чтобы вывести все окна для данного приложения в начало z-порядка. Например, у меня есть несколько окон терминала Putty, открытых в значке панели задач stacked, и я хочу отобразить все из них, а не только последнее используемое. Единственный обходной путь, который я нашел до сих пор,-это shift+right-click и "свернуть все окна", а затем "восстановить все окна". Есть более простой способ сделать это?

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

удерживая Shift, щелкните правой кнопкой мыши на значке панели задач, выберите " Восстановить все окна."

найдено здесь с кучей хороших ярлыков:

как предложено Wil,AutoHotkey можете сделать это.

вот скрипт, который поставит поверх всех окон PuTTY. Активируется при нажатии клавиши Win + p горячие клавиши:

удерживая нажатой клавишу ctrl, щелкните значок сгруппированы. Следует привести их по порядку.

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

единственная встроенная функция, о которой я знаю, - это делать то, что вы сделали, или, если приложение имеет стек, вы можете вывести их все, нажав Флаг Windows + количество (1-0) , удерживая Флаг Windows и нажать Tab цикл через выбор. Но я думаю, что это, вероятно, еще дольше.

пусть putty будет одной из первых 10 программ, закрепленных на панели задач. Допустим, шпатлевка №4 слева. Чтобы вывести один из открытых сеансов шпатлевки на передний план, нажмите Ctrl-Windows-4. Повторять на каждой сессии на фронт до их все на вершине.

Я использую клавиатуру Microsoft. Существует функция назначения макросов в программном обеспечении клавиатуры (скачать бесплатно с Microsoft). Я создал макрос, который делает Ctrl-Windows-4-4-4-4-4-4-4-4-4-4 и назначил его на клавиши калькулятора на клавиатуре. Теперь я могу вывести все сеансы шпатлевки на фронт одним нажатием клавиши.

(подсказка для использования программного обеспечения макроса: щелкните правой кнопкой мыши на значке ключа, чтобы разделить его означает, чтобы держать его нажатой.)

немного старая тема, но она актуальна для меня, так как я перешел на Win7 на работе совсем недавно.

Я просто быстро щелкните левой кнопкой мыши на значок группы В Панели задач: каждый щелчок занимает еще одно из окон на фронт, в какой-то момент Вы начинаете езда на велосипеде, хотя их.

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

Shift + щелкните правой кнопкой мыши задачу группировки-показать все окна сложены (или бок о бок)

* Директивы ставятся поверх всего кода.

По умолчанию комментарий от кода отделяется точкой с запятой (;). Она
указывает на то, что текст, который следует далее, не должен исполняться
(при запуске скрипта этот текст не загружается в память, чтобы он не
влиял на работу скрипта). Символ комментария, появляющийся на одной с
командой строке, не воспринимается как таковой в том случае, если между
ним и командой нет по крайней мере одного пробела или знака табуляции.

Эта возможность позволяет продвинутым редакторам, таким как Textpad, Scite,
Crimson и EditPlus, переходить к ошибочной строке, когда встречается
синтаксическая ошибка. Поскольку эту директиву пришлось бы добавлять в
каждый скрипт, обычно лучше настроить ваш редактор на использование
ключа командной строки/ErrorStdOut при запуске любого скрипта AutoHotkey. Хотя синтаксические ошибки посылаются в стандартный вывод
(stdout), они не появятся прямо в окне командной строки. Вместо этого
такой вывод может быть захвачен через конвейеризацию или
перенаправление.

Если данная директива не задана, по умолчанию используется величина интервала 2000 миллисекунд

Когда выполняется данная команда, то первое, что она делает, это отпускает
клавиши Ctrl и Alt, чтобы символы были посланы правильно. После посылки
всех нажатий команда не знает, можно ли ей вновь нажать Ctrl и Alt
(удерживает ли их всё-ещё пользователь). Но если заданный таймаут не
истёк, команда будет считать, что пользователь ещё не успел отпустить
модификаторы, и она нажмёт их вновь для соответствия их физическому
состоянию. Если таймаут истёк, команда не будет опять нажимать
модификаторы, так что пользователь должен будет отпустить и нажать их
снова, чтобы модифицировать ими ту же или какую-либо другую клавишу.
Величина таймаута должна быть меньше времени, в течение которого
пользователь обычно удерживает модификаторы горячей клавиши перед их
отпусканием. Иначе нажатое состояние модификаторов может быть
восстановлено, когда пользователь их уже отпустил, что приведёт к их
залипанию.

-EndChars, NewChars - Поставьте один пробел после EndChars и затем укажите новые конечные символы. Поскольку новые конечные символы
действительны глобально для всего скрипта - независимо от того, где
находится директива, - нет нужды задавать их более одного раза.
Максимальное число конечных символов - 100. Символы сверх этого лимита
игнорируются. Чтобы сделать табуляцию конечным символом, включите в
список `t. Чтобы сделать пробел конечным символом, поставьте его между двумя другими символами в списке (или в начало, если список
содержит только один другой символ или не содержит других символов).

-NewOptions - Задайте новые опции. В отличие от EndChars, в данном случае область действия директивы зависит от её места в
скрипте. Другими словами, разные секции автозамен могут иметь разные
умолчательные настройки.

Задавая данное значение, необходимо быть внимательным, поскольку если
неосторожно задать бесконечный цикл нажатий клавиш (при помощи команды
Send, которая случайно запустит другие клавиши), ваш компьютер может
зависнуть из-за потока быстро сменяющих друг друга нажатий горячих
клавиш.
Проще говоря, горячая клавиша ^c::Send ^c вызовет бесконечный цикл нажатий клавиш. Чтобы этого избежать, к определению
горячей клавиши добавьте префикс $, который помешает команде Send
запускать горячую клавишу.
Если директива в скрипте не задана, по умолчанию количество горячих клавиш равно 70.

Допустимое количество мегабайт на каждую переменную. Значения, превышающие 4095,
считаются равными 4095. Значения меньше 1 считаются равными 1.
Если этой директивы в скрипте нет, считается, что Megabytes имеет значение 64.
Ограничение ёмкости переменных имеет целью помешать скрипту,
содержащему ошибки, потребить всю доступную память в системе. Повышение
или снижение этого лимита не влияет на производительность скрипта и не
изменяет количество фактически используемой им памяти (кроме случаев
WinGetText и ControlGetText, которые при увеличении MaxMem смогут
считывать больше текста).
Эта настройка глобальна, т.е. её достаточно указать один раз в любом месте скрипта и она будет действовать на весь скрипт.
Эта настройка ограничивает только размер памяти, выделяемой для
переменной автоматически. Она не влияет на работу команды
VarSetCapacity.

Наличие этой директивы в любом месте скрипта заставляет команды активации окон -
такие как WinActivate, WinActivateBottom и GroupActivate - использовать
сразу более жёсткие методы активации, пропуская более мягкий.
Хотя эта директива обычно не влияет на быстроту или надёжность активации
окна, она может предотвратить мигание оконных кнопок на Панели задач,
когда разные окна активируются быстро одно за другим.
В Windows 95 и NT эта настройка, вероятно, никогда не потребуется, так как в них слабее контроль за активацией окон.

Есть ли способ добиться этого с помощью autohotkey: я хочу, чтобы некоторые окна всегда были в верхнем правом углу панели задач, независимо от того, сколько программ я открыл. Так, для exmaple, в настоящее время это, как это. Но я хочу, чтобы блокноты всегда были справа от панели задач. Так, например, вот так. Таким образом, независимо от того, сколько программ я открываю, я хочу, чтобы на панели задач всегда были блокноты, чтобы они были справа.

Я использую Windows 8.1 и последнюю версию AutoHotkey. Некоторые объяснения: я не хочу, чтобы само окно блокнота было в правой части экрана. Нет, но вместо этого я хочу, чтобы значок на панели задач блокнота находился в крайнем правом углу. Поэтому, если я, например, открываю новые программы, я хочу, чтобы значок автоматически перемещался вправо, чтобы после значка блокнота не было значков.

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

Как этого добиться? Я уверен, что должен быть способ, потому что AutoHotkey - очень хорошее программное обеспечение и имеет много улучшений.

Заранее спасибо. Это мой первый вопрос на этом сайте, поэтому, пожалуйста, будьте почтительны. Поблагодарить.

2 ответа 2

AFAIK единственный способ перемещать значки на панели задач - это перетаскивать их, так что это скрипт AHK, который выполняет процедуру программно:

Вот что я сделал: Этот поток является идеальной отправной точкой: как получить процессы, которые имеют значок systray, пункт 6. Дает вам рабочее решение для устаревших (32-битных) версий Windows: инструмент для упорядочения оконных кнопок на панели задач. К сожалению, он не работает в 64-битных ОС и Windows 10.

Тем не менее, некоторые открытия, которые я сделал во время моего исследования с примером, предоставляют в 6: Чтобы найти панель задач в окне 10, используйте следующий код:

Вам понадобится 64-битное определение структуры TBBUTTON:

Это должно дать вам хорошую отправную точку для решения по собственной инициативе.

Обновить
С помощью 7+TT Lib ваша цель довольно проста.
Вот рабочий пример, который я сделал (в архиве содержится источник моего примера, а также двоичный файл в папке x64/Release, называемый taskbar_pusher, который должен работать с Windows 7 - 10 до последней версии v1709).

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

Вы получаете AppId из CLI-вывода моего инструмента.
Вы должны быть в состоянии назвать это параметризацией таким образом с AHK (хотя я не очень знаком с AHK).

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

как я могу сделать окно поверх полноэкранных приложений с помощью скрипта Autohotkey? Любое окно, если это возможно, или, по крайней мере, окно, созданное сценарием.

2 ответа

Один из них, который, кажется, работает со многими полноэкранными играми, заключается в следующем:

Если вы хотите сделать это интерактивным, вы можете использовать что-то вроде:

Если SplashTextOn или SplashImage не сработает, ни настройка конкретного ребенка-родителя в игре Wicked Here , ни библиотека GPF , то в соответствии с этим ничего не будет или никто еще не справился. EDIT: Мне удалось получить метод child-parent выше для любого полноэкранного приложения (а не только для конкретной игры) следующим образом, но с графическим интерфейсом все еще что-то не так:

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

Я играл с приложением NodeWebkit, которое я создаю, и хотел бы знать, есть ли какой-нибудь способ заставить приложение работать поверх всего. Я знаю, что вы можете установить always on top в true в.

Я пытаюсь сделать приложение, отображающее перекрестие в центре экрана и оставляющееся поверх всего остального. Цель состоит в том, чтобы иметь перекрестие в некоторых играх FPS, которое его не.

В Autohotkey, Я хочу расположить свое графическое окно в правой нижней части экрана, но как? Для иллюстрации, +--------------------------------------+ | Desktop (screen) | | | | | | +----------+ | |.

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

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

При автоматизации процесса в приложении MDI я стараюсь использовать AutoHotKey. В данный момент времени в приложении MDI появляется новое дочернее окно mdi, и я хотел бы wait мой скрипт autohotkey.

Мне нужно сделать full screen overlay window в программе для OS X. точно, окно должно всегда быть поверх всех других windows, в том числе поверх строки меню в non-maximized-window пробелах, и поверх.

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