![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка с Hook ом ... [D6, Win2k]
Axis_of_Evil © (2003-05-29 09:23:00)Ставим ловушку wh_CallWndProc ...
function WndProcHook(Code: LongInt; wP: Word; Lp: LongInt): LongInt; stdcall;
var
Msg: ^CWPStruct;
begin
if (Code >= 0) then
begin
Msg := @Lp;
MainForm.OutList.Items.Add("!")
end;
Result := CallNextHookEx(TheHook, Code, wP, Lp);
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
TheHook := SetWindowsHookEx(wh_CallWndProc, @WndProcHook, 0, GetCurrentThreadID);
if TheHook = 0 then
ShowMessage("Couldn""t Hook");
end;
Вылетает с криками
... EOSError with message "System Error. Code: 1411
Class doesn"t exist" ...
Где я ошибся?
Игорь Шевченко (2003-05-29 10:05:00) [1]Ошибка в рекурсии, IMHO.
После фразы MainForm.OutList.Items.Add("!")
снова вызывается оконная процедура и так далее, со всеми остановками. Отладчик поможет :)
Axis_of_Evil (2003-05-29 09:34:00) [2]Msg := Pointer(Lp);
Тоже не работает ...
Axis_of_Evil (2003-05-29 09:33:00) [3]Msg := @Lp;
Вот это я сказанул ...