Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
14-45075
AdilAliev
2003-07-27 04:25
2003.08.14
WinAPI functions


14-45022
Tyrande
2003-07-28 20:58
2003.08.14
COS, SIN


14-45109
rastochnik
2003-06-18 12:01
2003.08.14
использовавание динамической загрузки


14-44991
Vlad Oshin
2003-07-28 10:07
2003.08.14
электрик Володя. Рассказ.


14-45130
Danil Fiodorovikh
2003-07-30 14:17
2003.08.14
Конкурс.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский