У меня есть два приложения, с которыми мне нужно общаться через PostMessage (SendMessage исключен, так как мне нужно, чтобы второе приложение могло выводить данные в Excel во время вызова.
Пока что Приложение 1 обращается к Приложению 2, чтобы убедиться, что оно открыто, и когда оно открыто, Приложение 1 отключено.
Когда пользователь завершит работу с приложением 2, мне нужно отправить сообщение обратно в приложение 1, чтобы оно разблокировалось.
Я зарегистрировал одно и то же сообщение Windows в каждом приложении, используя:
const
MyMessage = 'My-Message';
var
MyMessageID: cardinal;
procedure TMF.FormCreate(Sender: TObject);
begin
MyMessageID := RegisterWindowMessage(MyMessage);
end;
А в приложении 2 я могу отправить сообщение в приложение 1, используя:
targetHandle := FindWindow(Pchar('TMF'), Pchar('Send Test'));
...
if PostMessage(targetHandle, (MyMessageID), 0, 0) then
...
Я не понимаю, как я объявляю обработчик сообщения в приложении 1.
Если бы я использовал стандартное сообщение Windows, такое как WM_COPYDATA, я бы объявил процедуру
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
Но это терпит неудачу, потому что я не могу объявить MyMessageID
достаточно рано.
Возможно, это потому, что сегодня пятница, но что мне не хватает?