![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RegisterWindowMessage [D5, Win95/98, WinXP]
Talla2k © (2004-02-16 22:55:00)Предположим в двух программах имеется следующий код uu:=RegisterWindowMessage('Lamer').
Соответственно,одна из программ передает сообщение так
SendMessage(findwindow('Lamerclass','LAMO'),uu,0,0);
Ну а теперь собственно вопрос:
как написать обработчик на посылаемое сообщение,т.е. нужно предположим узнать что-же прислала другая программа?
Т.е. значения WParam и LParam?
З.Ы. Как работать с пользовательскими сообщениями,я знаю!
const _mymessage = wm_user+80;
..
private
procedure MyMessage(var Msg:TMessage);message _mymessage;
..
procedure TForm1.MyMessage(var Msg:TMessage);
begin
label1.caption:=inttostr(Msg.Lparam);
Label2.caption:=inttostr(Msg.Wparam);
end;
А вот из этого переделать для RegisterWindowMessage не получается.
Talla2k (2004-02-17 00:55:00) [1]Спасибо!
Almaz (2004-02-17 00:40:00) [2]
> А вот из этого переделать для RegisterWindowMessage не получается.
А из этого и не получится, для случая с RegisterWindowMessage придется перекрыть оконную функцию формы. Что вроде:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
...
private
procedure WndProc(var Message: TMessage); override;
...
end;
...
var
WM_MYUSERMESSAGE: Cardinal;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
WM_MYUSERMESSAGE := RegisterWindowMessage('MyMessage');
...
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_MYUSERMESSAGE then
begin
... Обработчик сообщения ...
end else
inherited WndProc(Message);
end;
Удачи.