serzh82saratov
Да, должно быть 4 параметра, так положено. Про wParam написано, что он не используется, но числа в нём, оказывается, передать можно. Я и не знал.
В параметре msg будет код сообщения. В данном случае 0xC. Т.е. эту функцию GetText можно назначить как перехватчик для нескольких сообщений и по msg она определит, для какого сообщения вызвана. Hwnd — идентификатор окна, которому поступило сообщение.
Про несколько параметров вы верно мыслите. Можно в строку их соединить, а в получателе разделить. Можно и имя функции таким образом передать, которую нужно вызвать в получателе. Вот так, например.
Отправитель.
Receiver = D:\SomeScript.ahk
DetectHiddenWindows, On
F11::
Params = Func1|Hello, world!|0x888
SendMessage, 0xC, 0, &Params,, %Receiver%
Return
Получатель.
OnMessage(0xC, "GetText")
GetText(wParam, lParam, msg, hwnd)
{
Params := StrGet(lParam)
StringSplit, Param, Params, |
MsgBox, Параметры GetText:`n%Param1%`n%Param2%`n%Param3%
%Param1%(Param2, Param3) ; Вызов функции по переданному имени.
Return 1
}
Func1(p1, p2)
{
MsgBox, Параметры Func1:`n%p1%`n%p2%
}