Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Хорошо, посылаю я сообщение другому приложению BroadcastSystemMes   Найти похожие ветки 

 
}|{yk ©   (2004-03-12 17:29) [0]

Но как мне в этом приложении получить сообщение? ведь сообщение я регистрирую в run-time и соответственно функции для "отлова" написать не могу. Чем ловить сообщение?


 
MBo ©   (2004-03-12 17:36) [1]

Как это не можешь? Если ты используешь RegisterWindowMessage в обеих программах с одной строкой, то и номер будет одинаковый. Вообще-то можешь просто WM_USER+(несколько сотен), скажем использовать, если тебе с константой проще


 
Sentinel ©   (2004-03-12 17:39) [2]

For sending private messages within a window class, an application can use any integer in the range WM_USER through 0x7FFF.


 
Digitman ©   (2004-03-12 17:41) [3]


> написать не могу


странного рода импотенция
и в чем проблема ?


 
}|{yk ©   (2004-03-12 17:46) [4]

То есть как? Если для обычных сообщений я мог использовать ну например
procedure CX_FILTER(var Msg: TMessage); message FILTER_EVENT;
то здесь я не могу написать такую процедуру, так как нет у меня const при компиляции, я же ее регистрирую в run-time. А как для такого сообщения функцию отлова написать?


 
MBo ©   (2004-03-12 17:49) [5]

В оконной процедуре или в Application.OnMessage проверяй.
Еще раз спрошу - обязательно регистрировать?


 
}|{yk ©   (2004-03-12 17:56) [6]

А иначе ведь нужно чтобы во всех программах, которые будут посылать такое сообщение, были одинаковые константы, а при генерации сообщения нужно знать только название. Как бы более правильней, что ли. Хотя не знаю до конца


 
Nikolay M. ©   (2004-03-12 18:09) [7]


> нужно чтобы во всех программах, которые будут посылать такое
> сообщение, были одинаковые константы, а при генерации сообщения
> нужно знать только название.

А MSDN почитать?

If two different applications register the same message string, the applications return the same message value. The message remains registered until the session ends.

Only use RegisterWindowMessage when more than one application must process the same message.


 
}|{yk ©   (2004-03-12 18:23) [8]

и что?
В одно пишу
[CODE]
procedure TFormDataLoader.ButtonExitClick(Sender: TObject);
var
FinishMessage: UINT;
Recipients: cardinal;
begin
Recipients := BSM_APPLICATIONS;
FinishMessage:=RegisterWindowMessage("FINISH_LOADING_DATA");
BroadcastSystemMessage(BSF_NOHANG,@Recipients,FinishMessage,0,0);
Close;
end;
[/CODE]
во втором
[CODE]
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
FinishMessage: UINT;
begin
FinishMessage:=RegisterWindowMessage("FINISH_LOADING_DATA");
if Msg.message = FinishMessage then
 ShowMessage("111");
end;
[/CODE]
не работает


 
Nikolay M. ©   (2004-03-12 18:29) [9]


> BroadcastSystemMessage(BSF_NOHANG,@Recipients,FinishMessage,0,0);

Почему так, а не PostMessage (HWND_BROADCAST...)?


 
}|{yk ©   (2004-03-12 18:34) [10]

И то верно. Спасибо за помощь


 
Nikolay M. ©   (2004-03-12 18:36) [11]

Пыж.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.159 c
11-1058185200
Sagrer
2003-07-14 16:20
2004.04.04
Проблема с размером окна в XP.


14-1078402407
Petr V. Abramov
2004-03-04 15:13
2004.04.04
Жизнь на Марсе есть!


3-1078378722
user
2004-03-04 08:38
2004.04.04
Как отобразить данные возвращаемые TADOStoredProc


3-1078470164
bushmen
2004-03-05 10:02
2004.04.04
ADOStoredProc


1-1079432857
Ericbek
2004-03-16 13:27
2004.04.04
Как вызвать программу для ДОС приложения?