![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Принимать сообщения и их обрабатывать. как бы интерфейс. [D6, WinXP]
MadGhost © (2004-01-17 17:37:00)Здравствуйте уважаемые мастера. У меня к Вам такой вопрос!!!
Как реализовать в обычной программе, прием и обработку сообщений от Windows. Т.е. например есть программа, где то в трее сидит, или в сервисах, не суть, она работает.... и что то делает. Управление этой программы осуществляется с помощью другой программы, которая ищет это окно, через FindWindow(...) и посылает ему сообщение SendMessage(handle,...) вот, а та в свою очередь что нибудь делает, принимая это сообщение.
так вот как реализовать прием этих сообщений в программе?
Diamond Cat (2004-01-18 03:08:00) [1]если программа написанна на API то в функции WinProc описываешь сообщени которые ты хотел бы обрабатывать сам к примеру
function WinProc (hWnd: THandle; nMsg: UINT;
wParam, lParam: Cardinal): Cardinal; export; stdcall;
begin
Result := 0;
case nMsg of
Wm_timer: что-то делаем ;
wm_lButtonDown: begin
MessageBox (hWnd, 'Окно закрывается',
'Мое окно', MB_OK);
PostQuitMessage (0);
при нажатии на окно левой кнопкой мыши вылезет месаджбох
end;
wm_Destroy:
PostQuitMessage (0);
wm_Close:
PostQuitMessage (0);
else
все остальные сообщения которые ты не обработал сам переходят на стандартный обработчик
Result := DefWindowProc (hWnd, nMsg, wParam, lParam);
end;
end;
если программа на VCL
то примерно тоже при перехвате оконной процедуры wndproc
объявляем
protected
procedure WndProc(var Message: TMessage); override;
..................
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited WndProc(Message);
case Message.Msg of
wm_lbuttondown: делаем что-то
end { of case };
end;
sniknik (2004-01-18 02:36:00) [2]скомпили и запусти
сначала это
D:\Program Files\Borland\Delphi7\Demos\ActiveX\OleAuto\AutoServ\memoedit.dpr
после это
D:\Program Files\Borland\Delphi7\Demos\ActiveX\OleAuto\AutoServ\autodemo.dpr
(диск D замени на актуальный (свой))
все. как говорится наслаждайся. ;о) (по секрету, тоже самое можно сделать и с громкостью запуском файлов и т.д. можно сделать чтобы проги, управляемай и управляющая, были на разных машинах DCOM называется)
MadGhost (2004-01-17 22:32:00) [3]однако.
я видел такой вариант в winamp т.е. как бы реализован API интерфейс к программе, прибавление убавление громкости, запуск файла и т.д.
хотя в принципе я видел такую возможность, в книжке почитал.
Nick Denry (2004-01-17 20:24:00) [4]crazy variant : СДЕЛАЙ МЕНЮ %-)