SendMessage

Материал из UoPilot
Версия от 11:11, 28 августа 2019; Tatikoma (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Описание

Отсылает приложению WinAPI событие.

Синтаксис

Привязка к окну: Да.
Работа со свернутым окном: Да.

sendmessage ([hWnd=workwindow [Msg=0 [wParam=0 [lParam=0]]]])
postmessage ([hWnd=workwindow [Msg=0 [wParam=0 [lParam=0]]]])

где:
[hWnd=workwindow] - хэндл окна в которое происходит отсылка.
[Msg] - код события.
[wParam] - параметр события.
[lParam] - параметр события.
Отличие SendMessage в том, что он дожидается ответа на посланное событие, PostMessage не ожидает ответ.

Примеры

//Пример 1
exec notepad //Открываем экземпляр Блокнот'а
set #HWND findwindow ('Блокнот') //Находим его окно
set #WM_CLOSE hex2dec(0x0010) //см. MSDN
//lParam и wParam не используются
set $s sendmessage (#HWND #WM_CLOSE 0 0) //приказываем окну закрыться
end_script
//Пример 2
exec notepad //Открываем экземпляр Блокнот'а
set #HWND findwindow ('Блокнот') //Находим его окно
set #WM_SYSCOMMAND hex2dec(0x0112) //см. MSDN
//Используем только wParam
set #wParam hex2dec(0xF020) //wParam = SC_MINIMIZE
set $s sendmessage (#HWND #WM_SYSCOMMAND #wParam 0) //приказываем окну свернуться
end_script

Смотрите также

hex2dec
Findwindow

История развития

2.37
Добавил функции отправки сообщений в окна приложений:

set $s sendmessage ([hWnd=workwindow [Msg=0 [wParam=0 [lParam=0]]]]) - ждет обработки и возвращает то, что ему ответили;
set $p postmessage ([hWnd=workwindow [Msg=0 [wParam=0 [lParam=0]]]]) - ничего не ждет, возвращает 0 в случае ошибки.