Главная страница
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.026 c
1-1079511165
olookin
2004-03-17 11:12
2004.04.04
Компонент ActiveX


1-1079016167
YurikGl
2004-03-11 17:42
2004.04.04
Проблемы с размером шрифтов.


11-1053866982
Minog
2003-05-25 16:49
2004.04.04
VCL&KOL


14-1078668053
Piter
2004-03-07 17:00
2004.04.04
А что случилось с ixbt.com?


3-1078773966
ceval
2004-03-08 22:26
2004.04.04
одно поле таблицы вывести в DBText