Главная страница
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.034 c
3-1078512180
Игорь Ор.
2004-03-05 21:43
2004.04.04
Вывод в один DBGrid поля из нескольких связанных таблиц


7-1074968177
Vcoder
2004-01-24 21:16
2004.04.04
Работа с памятью Secure DIgital


1-1079268363
novi
2004-03-14 15:46
2004.04.04
Реакция на указатель мыши объекта.


3-1078209489
Mdaaa
2004-03-02 09:38
2004.04.04
Paradox без BDE :))))


1-1079668537
Dimm
2004-03-19 06:55
2004.04.04
Как посчитать общую сумму часов