Давай по порядку. Передаём сообщение от кликера твоему клиенту.
POSTMESSAGE(hwnd, message, wParam, lParam) где
hwnd | hwnd твоего клиента (можно искать по названию или другим способом, это как всегда). |
message | код сообщения на отдельных кодах будут висеть разные действия. |
wParam, lParam | передаваемые параметры. Твои два 32 битных числа (в 32 битной винде) которые ты можешь передать. |
messageкод сообщения. Часть кодов используется системой, поэтому их лучше не использовать
Диапазон кодов используемых системой:
;~ Стандартные сообщения от 0 до 0x03FF (1023)
Диапазон кодов для использования локально (в одном приложении) хотя работать всё будет, но не всегда:
;~ Локальные сообщения от 0x0400 (1024) до 0x7FFF (32767)
То, что нам надо!;~ Глобальные сообщения
от 0xC000 (49152) до 0xFFFF (65535)У каждого системного сообщения параметры wParam, lParam свои и передаётся там то, что нужно именно этому сообщению (в своих мы используем то, что нужно нам)
Пример
POSTMESSAGE($_hwnd,0x0301,0,0) // передаём окну код 0x0301 - скопировать
POSTMESSAGE($_hwnd,0x0302,0,0) // передаём окну код 0x0302 - вставить
wParam, lParam равны 0 и не используются
//Отправляем сообщение окну о нажатой левой кнопке мыши
POSTMESSAGE($HWND, 0x0201, 1, $x + ($y*65536))
0x0201 - код нажатия ЛКМ
lParam содержит в одном числе координаты, куда именно кликаем. Координаты запихиваются так $x + ($y*65536))
Наш пример.Так как же нам использовать. Да вот так берём и шлём сообщения, а клиент учим понимать их правильно.
Как писал выше кода будем использовать в диапазоне от 0xC000 (49152) до 0xFFFF (65535)
Вот хотим мы передать клиенту ответ "машина запущена" или "машина остановлена"
Назначим кода
0xD001 (53249 в десятеричной) - машина запущена
0xD002 (53250) - машина остановлена
wParam - номер машины
$_hwnd - дискриптор окна клиента
POSTMESSAGE($_hwnd , 0xD001, 3, 0) // запущена машина №3
можно во втором параметре передавать время действия в UNIX
POSTMESSAGE($_hwnd , 0xD002, 2, $_time_t) // остановлена машина №2, время текущее
Как делфи не знаю, знаю как в AutoIT если на нём сделана принимающая сторона
На код сообщения можно назначить свою функцию
GUIRegisterMsg(0xD001, '_StartMashine')
GUIRegisterMsg(0xD002, '_StopMashine')
Func _StartMashine($hWnd, $iMsg, $iwParam, $ilParam)
ConsoleWrite('Машина № ' & $iwParam & ' запущена' @CRLF)
EndFunc
Func _StopMashine($hWnd, $iMsg, $iwParam, $ilParam)
ConsoleWrite('Машина № ' & $iwParam & ' остановлена в ' & $ilParam & @CRLF)
EndFunc