Вот, вот. Всё пытаюсь к этому подвести. Запаковать биты и отправить одним параметром это совсем не то, что передавать текст как серию параметров, да потом ещё и текст расшифровывать.
Но не исключаю и необходимость текстовой информации.
Если общаются две программы, то достаточно задержки. Если действительно приёмник один, а передатчиков несколько, они могут посылать в одно время.
Как выяснилось GETMESSAGE в кликере работает по очень простой схеме и переход с POSTMESSAGE на SENDMESSAGE ничего не даёт (может даст в одностороннем порядке на сервере, как там делфи будет обрабатывать). Или SENDMESSAGE не ждёт. Короче кликер с кликером ничего не ждёт.
Вот с подтверждением получилось так
Приёмник
#name "SENDMESSAGE-GETMESSAGE_Receiver"
// Author: Vint
// Version: 0.1 (01.07.2019)
// Скрипт для Clickermann v4.13.14
LOGCLEAR
$WM_tr = 2000 // код сообщения у передатчиков
WHILE(1)
define($str, "")
GETMESSAGE($wp, $lp, $isnew)
IF($isnew != 0)
// отправляем подтверждение
POSTMESSAGE($lp, 2000, 1, $lp)
IF($wp ! 0)
$str = strconcat($str, char($wp))
LOGWRITE("сообщение ", char($wp), " wParam:", $wp, " от ", $lp)
ELSE
$event = $str
$str = ""
// здесь обрабатываем наше сообщение
LOGWRITE("Принята строка: ", $event, " от программы ", $lp)
END_IF
END_IF
WAITMS(5)
END_CYC
HALT
Передатчик
#name "SENDMESSAGE-GETMESSAGE_Receiver Transmitter"
// Author: Vint
// Version: 0.1 (01.07.2019)
// Скрипт для Clickermann v4.13.14
#define @CRLF:STRCONCAT(char(13),char(10))
LOGCLEAR
print("Передатчик", @CRLF)
$WM_re = 1024 // код сообщения у приёмника
$hwnd_re = wndfind("SENDMESSAGE-GETMESSAGE_Receiver")
SUB(wait_confirmation, $cwp)
$confirmation = 0
$time_conf = $_ms + 300
WHILE($confirmation = 0)
GETMESSAGE($wp, $lp, $isnew)
IF(($isnew ! 0) & ($lp = $_hwnd_self))
$confirmation = 1
//print("-------------------------подтверждено")
END_IF
IF(($time_conf < $_ms) & ($confirmation = 0))
// отправляем запрос повторно
SENDMESSAGE($hwnd_re, $WM_re, $cwp, $_hwnd_self)
$time_conf = $_ms + 300
//print("ПОВТОРНО ", $cwp)
END_IF
WAITMS(3)
END_CYC
END_SUB
SUB(Send_message, $t)
$len = STRLEN($t) + 1
FOR($i=1, $i < $len)
$chr = STRCUT($t, $i, 1)
$cod = code($chr)
print("передаём ", $chr, " - ", $cod)
SENDMESSAGE($hwnd_re, $WM_re, $cod, $_hwnd_self)
WAITMS(3)
wait_confirmation($cod)
END_CYC
SENDMESSAGE($hwnd_re, $WM_re, 0, $_hwnd_self) // wParam = 0 строка окончена
wait_confirmation(0)
print("--- Передали! ---", $t)
END_SUB
IF($hwnd_re ! 0)
Send_message("Очень важный текст")
print("")
//WAITMS(1000)
Send_message("Второй текст")
END_IF
HALT