Не работает SendMessage
От: barbanel  
Дата: 17.07.14 14:46
Оценка:
Здравствуйте уважаемые!
Не работает SendMessage.

Знаю что тема обсосана уже миллион раз, но уже второй день не могу найти причину.
Есть два разных приложения, одно из них шлет т.н. ping-сообщения второму, второе отчитывается что оно живое.
Смысл сего в том, что если второе приложение долго не отвечает, первое его грохает и запускает снова.

1) Первое приложение ищет хендл главной формы второго приложения и шлет ему сообщение:
SendMessage(FirstHandle, WM_APP_SERVER_PING, self.Handle, 0);

2) Второе приложение получает это сообщение и шлет в ответ:
procedure TfrmAppServerMain.OnMessageNew(var Msg: TMsg; var Handled: Boolean);
begin
    if ( msg.message = WM_APP_SERVER_PING ) then
    begin
        Handled := true;

        GuardianHandle := HWND(Msg.WParam);
        SendMessage(GuardianHandle, WM_APP_SERVER_PONG, 0, 0);
    end;
end;

Сами сообщения определены так (разумеется в обоих приложениях)
const
  WM_APP_SERVER_PING    = WM_USER + 241;
  WM_APP_SERVER_PONG    = WM_USER + 242;

Проблема: первое приложение не получает ответное сообщение.
Я убедился что хендл первого находится правильно, внутри второго сообщения также принимается правильный хендл первого приложения, но второе упорно не видит это сообщение.
Что я делаю не так? Возможно я чего-то не знаю, чего именно?

Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.