Главная страница
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.049 c
14-1078169277
ChcngerMan
2004-03-01 22:27
2004.04.04
Софт для компьютерных залов.


1-1079598156
Asdor
2004-03-18 11:22
2004.04.04
Объявлен ли IStream в какой-нибудь библиотеке типов?


4-1074747529
GrayFace
2004-01-22 07:58
2004.04.04
Как делать сервисы? Они запускаются до входа в систему?


14-1078481411
Igor_thief
2004-03-05 13:10
2004.04.04
Хм


3-1078386340
Graf
2004-03-04 10:45
2004.04.04
Сортировка DBF-ок