Нужна помощь в написании скрипта? Close

Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.

ВконтактеГруппа Вконтакте Электронная почтаЭлектронная почта Личная страницаСимаков Яков ВК
home icon Все разделы
comunity icon Нужна помощь?

WinSet -Autohotkey

Производит разнообразные изменения в указанном окне.

WinSet, Attribute, Value [, WinTitle, WinText, ExcludeTitle, ExcludeText]

Параметры

Attribute, Value Смотрите список ниже.
WinTitle Заголовок или часть заголовка окна (метод поиска можно задавать командой SetTitleMatchMode). Если этот и следующие 3 параметра опущены, будет использовано последнее найденное окно. Если параметр задан буквой А и следующие 3 параметра опущены, будет использовано активное окно. Чтобы задать окно через его класс, используйте конструкцию ahk_class ТочноеИмяКласса (можно посмотреть программой Window Spy). Чтобы использовать идентификатор процесса (PID), задайте параметр как ahk_pid %ПеременнаяСодержащаяPID%. Чтобы использовать группу окон, задайте параметр как ahk_group ИмяГруппы. Чтобы использовать идентификатор окна, задайте параметр как ahk_id %ПеременнаяСодержащаяID%. Сектор поиска можно сузить, задав несколько критериев, например, My File.txt ahk_class Notepad.
WinText Подстрока из одиночного текстового элемента окна (можно посмотреть программой Window Spy). Скрытые текстовые элементы определяются, если включено определение скрытого текста (команда DetectHiddenText).
ExcludeTitle Окна, чей заголовок включает значение этого параметра, исключаются.
ExcludeText Окна, чей текст включает значение этого параметра, исключаются.

Attribute, Value

AlwaysOnTop, [On|Off|Toggle]: заставляет окно находиться поверх всех других окон. Значение On включает эту настройку, Off - выключает, Toggle - переключает в противоположное состояние. Вместо AlwaysOnTop можно использовать слово Topmost.

Bottom: помещает окно ниже всех других в последовательности. Эффект тот же, что при нажатии Alt-Escape. Например: WinSet, Bottom,, WinTitle

Top [v1.0.36.01+]: помещает окно на верх последовательности, не активируя его. Однако в большинстве случаев умолчательные настройки системы, вероятно, приведут к активации окна. Вдобавок, эта команда может оказаться неэффективной по причине защиты со стороны операционной системы против приложений, пытающихся "украсть" фокус ввода у приложения, с которым работает пользователь (это может зависеть от того, какого типа окно активно в данный момент и что именно делает пользователь). Один из возможных обходных путей - включить ненадолго для окна режим AlwaysOnTop, затем выключить его.

Disable или Enable: блокирует или разблокирует окно. Когда окно блокировано, пользователь не может перемещать его или взаимодействовать с его элементами управления. Вдобавок, блокированные окна не показываются в списке, выводимом по нажатию Alt-Tab.

Redraw: пытается обновить вид и содержимое окна, информируя операционную систему, что окно должно быть перерисовано. Если для какого-то окна этот метод не работает, попробуйте команду WinMove. Если это также не подействует, попробуйте следующий пример:

WinHide, WinTitle WinShow, WinTitle

Style,N или ExStyle,N: изменяет стиль или расширенный стиль окна. Действие зависит от значения N. Если оно начинается со знака плюс или минус, стиль (стили) добавляются или удаляются. Если оно начинается со знака ^, каждый из указанных далее в N стилей переключается в противоположное состояние. Если N начинается с цифры, стиль окна заменяется на указанный в N.

Переменная ErrorLevel будет содержать 1, если указанное окно не найдено или если стиль не может быть применён.

Некоторые изменения стилей требуют перерисовки окна с помощью команды WinSet Redraw (см. ниже). Некоторые номера стилей можно посмотреть в статье "Стили, используемые командами Gui и GuiControl" ("Styles Usable by the Gui and GuiControl Commands"). Примеры:

WinSet, Style, -0xC00000, A ; Удаляет полосу заголовка у активного окна (WS_CAPTION). WinSet, ExStyle, ^0x80, WinTitle ; Переключает атрибут WS_EX_TOOLWINDOW, что проявляется ; в удалении окна из списка, выводимого по Alt-Tab, или возвращении его в этот список.

WinSet, Region [, Options, WinTitle, ...]

Задаёт форму видимой области окна (прямоугольник, эллипс, многоугольник). Если параметр Options пустой, окно возвращается к его оригинальному/умолчательному виду. Иначе параметр может быть задан одним или более из указанных ниже значений, отделяемых друг от друга пробелами:

Прямоугольник или эллипс. Если W и H заданы, а Е отсутствует, формой будет прямоугольник. Положение его верхнего левого угла определяется первой (и единственной) парой координат X-Y. Если Е также присутствует, формой будет эллипс. Например: WinSet, Region, 50-0 W200 H250 E, WinTitle

Многоугольник. Если W и H не указаны, то каждая из пар X-Y задаёт координаты одной из вершин многоугольника (относительно левого верхнего угла окна). Например, если заданы три пары координат, то в большинстве случаев получается треугольник. Порядок указания координатных пар может иногда иметь значение. Кроме того, слово Wind в параметре Options задаёт обходящий метод вместо чередующего для построения многоугольника (the winding method instead of the alternating method).

ErrorLevel равен 1 при неудаче и 0 в случае успеха. Неудача случается, когда: 1) указанное окно не существует; 2) какие-то из значений в параметре Options недопустимы; 3) задано более чем 2000 координатных пар; 4) заданная форма недопустима или не может быть применена к указанному окну; 5) версия программы старее, чем 1.0.38.02, и при этом координата Х задана со знаком плюс или минус.

Примеры применения этой команды смотрите в конце статьи.

WinSet, Transparent, N, WinTitle

Делает окно полупрозрачным. Степень прозрачности задаётся значениями N от 0 до 255: 0 означает невидимое окно, 255 - полностью видимое. Прозрачность окна может быть полностью отключена, если задать N как слово Off. Это не то же самое, что 255, поскольку также позволяет улучшить производительность системы и уменьшить использование системных ресурсов.

Известные ограничения для Transparent и TransColor:

Совет: чтобы сделать прозрачной панель задач, используйте команду:

WinSet, Transparent, 150, ahk_class Shell_TrayWnd

Чтобы сделать прозрачным меню кнопки "Пуск", следуйте этому примеру:

DetectHiddenWindows, on WinSet, Transparent, 150, ahk_class BaseBar ; Чтобы все его подменю также были прозрачными, включите также скрипт ниже. ; Прим. переводчика: но у меня Главное меню имеет класс не BaseBar, а DV2ControlHost. ; Кроме того, скрипт ниже не сделал его подменю прозрачными.

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

#Persistent SetTimer, WatchForMenu, 5 return ; Конец секции автовыполнения. WatchForMenu: DetectHiddenWindows, on ; Может ускорить отслеживание меню. IfWinExist, ahk_class #32768 WinSet, Transparent, 150 ; Использует окно, найденное командой выше. return

WinSet, TransColor, Color [N], WinTitle

Делает все пикселы выбранного цвета внутри окна прозрачными, позволяя видеть сквозь окно то, что находится под ним. Щелчки мыши на невидимых пикселах проходят сквозь окно к окну, лежащему ниже. Задайте в Color название цвета или его обозначение в формате RGB (смотрите статью о SplashImage или используйте PixelGetColor в режиме RGB). Чтобы вдобавок сделать видимую часть окна частично прозрачной, добавьте пробел (не запятую) и укажите уровень прозрачности (0-255). Например: WinSet, TransColor, EEAA99 150, WinTitle

TransColor часто используется для создания надписей на экране и других визуальных эффектов. Смотрите пример создания экранной надписи в конце статьи, описывающей команду Gui.

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

WinSet, Transparent, Off, WinTitle WinSet, TransColor, Off, WinTitle

Известные ограничения: смотрите список выше.

Примечания

Эта команда не меняет значения ErrorLevel за исключением случаев, упомянутых выше.

Считывание текущих параметров прозрачности возможно только в через WinGet.

Окно всплывающего текста (SplashText) скрипта может быть лишено свойства "поверх всех окон" через команду:

WinSet, AlwaysOnTop, Off, My Splash Window Title

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

Примеры

WinSet, Transparent, 200, Безымянный - Блокнот ; Сделать окно слегка прозрачным. WinSet, TransColor, White, Безымянный - Блокнот ; Сделать все белые пикселы невидимыми. WinSet, AlwaysOnTop, toggle, Калькулятор ; Переключить свойство "поверх всех окон" для Калькулятора. ; Более длинный пример. ; Ниже несколько горячих клавиш демонстрируют эффект применения "Transparent" и "TransColor". ; Примечание: если вы нажмёте одну из горячих клавиш в момент, когда курсор мыши находится ; над пикселом, который невидим вследствие выполнения TransColor, то команды, выполняемые ; по этой горячей клавише, будут применены к окну, которое видимо сквозь этот пиксел! #t:: ; Нажмите Win+T, чтобы сделать цвет под курсором мыши невидимым. MouseGetPos, MouseX, MouseY, MouseWin PixelGetColor, MouseRGB, %MouseX%, %MouseY%, RGB ; Видимо, необходимо вначале отключить уже существующую прозрачность: WinSet, TransColor, Off, ahk_id %MouseWin% WinSet, TransColor, %MouseRGB% 220, ahk_id %MouseWin% return #o:: ; Нажмите Win+O, чтобы отключить прозрачность окна под курсором мыши. ; Курсор должен быть на видимой части окна. MouseGetPos,,, MouseWin WinSet, Transparent, 255, ahk_id %MouseWin% ; Чтобы избежать появления чёрного фона. WinSet, TransColor, Off, ahk_id %MouseWin% return #g:: ; Нажмите Win+G, чтобы посмотреть текущие настройки окна под курсором мыши. ; Курсор должен быть на видимой части окна. MouseGetPos,,, MouseWin WinGet, Transparent, Transparent, ahk_id %MouseWin% WinGet, TransColor, TransColor, ahk_id %MouseWin% ToolTip Прозрачность:`t%Transparent%`nПрозрачный цвет:`t%TransColor% Sleep, 3000 ToolTip return ; Примеры применения "WinSet Region". WinSet, Region, 50-0 W200 H250, WinTitle ; Сделать все части окна, лежащие вне этого прямоугольника, невидимыми. WinSet, Region, 50-0 W200 H250 R40-40, WinTitle ; То же, что выше, но с углами скруглёнными по эллипсу 40x40. WinSet, Region, 50-0 W200 H250 E, WinTitle ; Эллипс вместо прямоугольника. WinSet, Region, 50-0 250-0 150-250, WinTitle ; Треугольник вершиной вниз. WinSet, Region,, WinTitle ; Восстановить оригинальную/умолчательную форму окна. ; Это более сложная форма. Внутри видимой области создаётся прямоугольное отверстие. ; Задаются два прямоугольника: внешний и внутренний. Каждый задаётся пятью парами ; координат, т.к. первая пара повторяется в конце, чтобы замкнуть прямоугольник. WinSet, Region, 0-0 300-0 300-300 0-300 0-0 100-100 200-100 200-200 100-200 100-100, WinTitle
Автор перевода: YMP
Настоящее имя переводчика: Юрий Попов
Источник: http://www.script-coding.com/AutoHotkey/WinSet.html
Под редакцией ahk-wiki.ru от 21.08.19