Главная страница
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.033 c
14-1078752373
он
2004-03-08 16:26
2004.04.04
выборы


14-1078927349
MPS
2004-03-10 17:02
2004.04.04
Как просто вывести текст на печать в Си++?


9-1063291856
AlexT1000
2003-09-11 18:50
2004.04.04
FullScreen in DirectX9 ?


1-1079178882
Layner
2004-03-13 14:54
2004.04.04
Помогите показать окно SHOWMODAL в MDI приложении...


7-1073284686
Den_lam
2004-01-05 09:38
2004.04.04
LPT