Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];




Вниз

Системные ловушки и VCL 


ikar   (2001-12-08 13:51) [0]

Необходимо вызвать VCL форму из своей ловушки.
Возможноли и как зарегистрировать свою ловушку из своего exe файла.



VladD2   (2001-12-10 00:41) [1]

Ловушка это Hook что ли? Hook если да, то какая облатсь видимости. Я так понял чужие приложения. Да? Если так, то...

Возможноли и как зарегистрировать свою ловушку из своего exe файла.

Нет. Веренее не совсем. Для этого Hook нужно засунить в длл. Но exe-шник нужен для запуска этого Hook-а. Ну, а далее запускай форму, только помни, что главное коно приложения в длл-и (у Дельфи) не создано.



Digitman   (2001-12-10 08:25) [2]

>VladD2
"Для этого Hook нужно засунить в длл" - а что, без DLL при генерации хука никак не обойтись, по-твоему ?



ikar   (2001-12-10 09:10) [3]

Ловушка этр Hook. Нужно вызывать свой VCL код из своей ловушки. Пытался засунуть ловушку в свой exe, регистрироваться не хочет.



nikkie   (2001-12-10 10:10) [4]

>ikar
видимо, hook у тебя системный. помещай hook в dll. проблем с тем, чтобы создать vcl форму в dll нет. только при таком подходе будешь создавать окно для каждого процесса, в котором решишь его показать. жуть...

другое дело, если тебе нужно иметь только одно окно. как тебе сказал VladD2, все равно у тебя есть exe для установки этого hook"a - в нем и помещай форму. а дальше тебе надо передать данные из процесса, в котором твой hook активизировался в процесс, который hook установил. смотри какие есть возможности по ipc (можно найти свое окно и послать message, можно через sockets, named pipes, file mapping).



Fellomena   (2001-12-10 11:00) [5]


var
SysHook : HHook = 0;
Wnd : Hwnd = 0;

procedure Hook666() export; stdcall;
begin
//Запустить ловушку.
SysHook := SetWindowsHookEx(WH_GETMESSAGE,
@SysMsgProc, HInstance, 0);
end;
{
//Отключить ловушку.
UnhookWindowsHookEx(SysHook);
SysHook := 0;
}
end;


В процедуре SysMsgProc пишешь обработчик и вызов формы



Raptor   (2001-12-10 22:29) [6]

Привет!

2Fellomena
Не все так просто. :-)))
Если ловушка системная, то как правильно указал nikkie ее нужно помещать в отдельную ДЛЛ. И вообще в ловушках VCL не совсем желательна. Вернее, даже совсем нежелательна. :-))
Лучше все писать на чистом API.

Raptor.



VladD2   (2001-12-11 05:03) [7]

>Digitman
> "Для этого Hook нужно засунить в длл" - а что, без DLL при генерации
> хука никак не обойтись, по-твоему ?

Ну, если хук локальный, то можно и обойтись, а если нужно перехватывать события в других процессах, то не обойтись точно.




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.015 c
1-18832           vlv                   2002-01-21 21:07  2002.02.07  
Количество значений в наборе


3-18728           Akhmadey              2002-01-10 07:58  2002.02.07  
Где скачать бы, а?


1-18893           VladimirL             2002-01-23 14:29  2002.02.07  
Как отправить StringGrid на печать целиком?


3-18713           Olfi                  2002-01-06 19:53  2002.02.07  
Как правильно сохранить содержимое БД...


1-18816           Alex                  2002-01-20 20:40  2002.02.07  
Гадость