Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.14;
Скачать: CL | DM;

Вниз

Hook на создание окна.   Найти похожие ветки 

 
Lony ©   (2003-06-14 02:55) [0]

Проблема с хуком на создание окна. DLL не ипользую. Пробовал использовать WH_SHELL, не помогло, пробовал WH_GETMESSAGE+WM_CREATE, тоже не получил нужного результата. Да что, собственно, говорить, вот часть кода. Может кто знает, в чём проблема?

var
Form1: TForm1;
SysHook:HHOOK;
Wnd:HWND;
implementation

{$R *.dfm}

function SysMsgProc(Code:integer;wParam:word;lParam:longint):longint; stdcall;
begin
if code=HC_ACTION then
begin
Wnd:=TMsg(Pointer(lParam)^).hwnd;
if TMsg(Pointer(lParam)^).message=WM_CREATE then
MessageBox(0,"Хук ботает, а ты наслаждаешься!","Не стыдно?",0);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SysHook:=SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc,HInstance,0);
if SysHook<>0 then
MessageBox(0,"Хук установлен!","Поздравляю!",0)
else
MessageBox(0,"Дерьмовый твой хук!","Ты лажанулся!",0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if UnHookWindowsHookEx(SysHook) then
( 0,"Хук снят!","Вух",0)
Проблема с хуком на создание окна. DLL не ипользую. Пробовал использовать WH_SHELL, не помогло, пробовал WH_GETMESSAGE+WM_CREATE, тоже не получил нужного результата. Да что, собственно, говорить, вот часть кода. Может кто знает, в чём проблема?

var
Form1: TForm1;
SysHook:HHOOK;
Wnd:HWND;
implementation

{$R *.dfm}

function SysMsgProc(Code:integer;wParam:word;lParam:longint):longint; stdcall;
begin
if code=HC_ACTION then
begin
Wnd:=TMsg(Pointer(lParam)^).hwnd;
if TMsg(Pointer(lParam)^).message=WM_CREATE then
MessageBox(0,"Хук ботает, а ты наслаждаешься!","Не стыдно?",0);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SysHook:=SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc,HInstance,0);
if SysHook<>0 then
MessageBox(0,"Хук установлен!","Поздравляю!",0)
else
MessageBox(0,"Дерьмовый твой хук!","Ты лажанулся!",0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if UnHookWindowsHookEx(SysHook) then
MessageBox(0,"Хук снят!","Вух",0);
end;


 
_ALEXey_ ©   (2003-06-14 08:26) [1]

Хук WH_CBT, code=HCBT_CREATEWND. У меня это в ДЛЛ-ке, нормально работает. В ехе-шнике не знаю, будет или нет работать ?!?!?!


 
Song ©   (2003-06-14 11:42) [2]

Устанавливаете хук системный -
SysHook:=SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc,HInstance, 0);

А Call-Back ф-ию помещаете в проект. Теорию почитать надобна бы..


 
Lony ©   (2003-06-14 12:03) [3]

А как установить системный хук? Через DLL всё получается, но это ещё лишние 350Kb.


 
Song ©   (2003-06-14 22:05) [4]

Системный хук устанавливается в dll. Только в dll!


 
jonni ©   (2003-06-15 05:02) [5]

Системный хук устанавливается в dll. Только в dll!


eto tochno.........


 
Lony ©   (2003-06-15 11:02) [6]

Спасибо, тогда всё путём.


 
Morfein ©   (2003-06-15 15:42) [7]

to Song: под Win9x нет никаких "только в dll!". Функцию можно и из этого же модуля брать... только его надо отдельно загрузить через LoadLibrary(pchar(ParamStr(0)));


 
DVM ©   (2003-06-15 15:55) [8]


> А как установить системный хук? Через DLL всё получается,
> но это ещё лишние 350Kb.

350 kb? Такая dll займет килобайт 10 от силы.


 
DVM ©   (2003-06-15 15:58) [9]

Создание топ-левел окон можно отлавливать и без dll во всех версиях Windows. Нужные хуки уже стоят в Shell32.dll.


 
jonni ©   (2003-06-15 16:24) [10]

a podrobnee mozno??


 
DVM ©   (2003-06-15 16:28) [11]


> jonni ©

Напомни на мыло, пришлю несложный пример.



Страницы: 1 вся ветка

Текущий архив: 2003.08.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
14-45158
Вопрошающий.
2003-07-30 17:12
2003.08.14
Утечка памяти в собственной программе


14-45003
EugeneX
2002-12-05 11:29
2003.08.14
TBitmap.Palette а как это реализовать для pBitmap?


14-45004
AlexRush
2003-07-28 16:44
2003.08.14
dcc32, ObjectPascal (6) - языково-компиляторные концепции...


14-44961
Franzy
2003-07-30 13:56
2003.08.14
Где взять стандартные иконки windows?!


14-45007
Думкин
2003-07-29 05:35
2003.08.14
Стихи