Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Посылают сообщение окну или его контролу (элементу управления). SendMessage, кроме того, ждёт подтверждения.
Msg | Номер сообщения (может быть выражением). Номера некоторых сообщений можно посмотреть в статье "Коды оконных сообщений". |
wParam | Первый компонент сообщения (может быть выражением). Если опущен или пустой, будет послан 0. |
lParam | Второй компонент сообщения (может быть выражением). Если опущен или пустой, будет послан 0. |
Control | Контрол. Если опущен или пустой, сообщение будет послано прямо указанному окну. Может задаваться как ClassNN (имя класса и номер данного экземпляра) или как имя/текст контрола. Все эти значения можно определить, используя программу Window Spy. При использовании имени/текста метод их поиска можно задавать командой SetTitleMatchMode. Чтобы указать контрол через его HWND (window handle, идентификатор окна), оставьте параметр Control пустым и задайте ahk_id %ControlHwnd% как значение параметра WinTitle - это работает также и для скрытых контролов, даже если обнаружение скрытых окон (команда DetectHiddenWindows) не включено. HWND, как правило, узнаётся через команды ControlGet Hwnd, MouseGetPos или DllCall. |
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 | Окна, чей текст включает значение этого параметра, исключаются. |
PostMessage: нуль, если программа выполнена успешно; иначе 1.
SendMessage: ErrorLevel содержит слово FAIL, если возникли проблемы. Иначе содержит числовой результат сообщения, который иногда может быть "ответом", в зависимости от типа сообщения и целевого окна.
Эти команды нужно применять с осторожностью, поскольку посылка сообщения не в то окно (или посылка некорректного сообщения) может вызвать непредвиденную реакцию приложения или привести к аварийному завершению его работы. Причина в том, что большинство приложений не рассчитаны на получение определённого рода сообщений из внешних источников.
PostMessage помещает сообщение в очередь сообщений, связанную с указанным окном. Она не ждёт подтверждения или ответа. Напротив, SendMessage ждёт до 5 секунд, пока целевое окно обработает сообщение. Если в течение 5 секунд сообщение не будет обработано, команда завершается и задаёт переменной ErrorLevel значение FAIL.
Параметры Msg, wParam и lParam должны быть целыми числами между -2147483648 и 4294967295 (0xFFFFFFFF). Как обычно в AutoHotkey, префикс 0x означает шестнадцатеричное число. Например, 0xFF эквивалентно 255.
Послать строку через параметры wParam или lParam можно путём указания адреса переменной. Пример ниже использует оператор адреса (&), чтобы сделать это:
Начиная с версии 1.0.43.06, строка, помещаемая в MyVar получателем сообщения, распознаётся корректно без необходимости каких-либо дополнительных шагов. Однако это работает, только если первым символом параметра является амперсанд (&). Например, 5+&MyVar не будет работать, а &MyVar или &MyVar+5 будут.
Начиная с версии 1.0.40.05 строка в кавычках (литеральная строка) также может быть послана; оператор & в этом случае не используется. Например:
Чтобы послать сообщение всем окнам в системе, включая те, что скрыты или заблокированы, задайте параметру WinTitle значение ahk_id 0xFFFF (0xFFFF означает сообщение HWND_BROADCAST). Этот способ должен использоваться только с сообщениями, которые предназначены для рассылки всем окнам. Пример:
Чтобы скрипт сам мог принимать сообщения, используйте функцию OnMessage().
Об использовании этих команд см. также статью "Отправка сообщений окну или его элементам управления".
Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если это не задано командой DetectHiddenWindows.