Вниз
Скачать: CL | DM;

Hook   Найти похожие ветки 

← →
Gayrus ©   (2002-03-06 16:18) [0]

Создаю компонент с хуком, а когда просто ложу его на форму, винда пишет, мол, Программа выполнила недоступную... и т.д. В чём дело?


← →
Юрий Зотов ©   (2002-03-06 16:59) [1]

Каков вопрос - таков ответ: в компоненте.


← →
MBo ©   (2002-03-06 16:59) [2]

значит, ошибка уже в конструкторе


← →
Dimaond Cat ©   (2002-03-06 22:08) [3]

у меня была такаяже пурга, и дело было именно в неправильности нарисания компонента , а именно использования в нем SetwindowsHokEx, но есть добрые люди например Юоий Зотов, короче выкладывай свой компонет (особенно ту часть где хучишь) будем искать баг.


← →
Gayrus ©   (2002-03-07 03:50) [4]

Я даже заменил свой хук на найденый здесь, в форуме, и всёравно: function TGHook.HookProc(code:integer; wParam:Word; LParam:LongInt):LongInt;stdcall;
var Key:Word;
msg:PEVENTMSG;
Wnd:hWnd;
begin
if Code>=0 then begin
result:=0;
msg:=Pointer(LParam);
Key:=msg.paramL and 255;
Wnd:=msg.hwnd;
If FMouse then case msg.message of
WM_LBUTTONDOWN:If Assigned(FOnMouseDown)then FOnMouseDown(Self,Wnd,mbLeft);
WM_MBUTTONDOWN:If Assigned(FOnMouseDown)then FOnMouseDown(Self,Wnd,mbMiddle);
WM_RBUTTONDOWN:If Assigned(FOnMouseDown)then FOnMouseDown(Self,Wnd,mbRight);
WM_MOUSEMOVE :If Assigned(FOnMouseMove)then FOnMouseMove(Self);
end;
If FKeyBoard then case msg.message of
WM_KEYDOWN:If Assigned(FOnKeyDown)then FOnKeyDown(Self,Key);
WM_KEYUP :If Assigned(FOnKeyUp)then FOnKeyUp(Self,Key);
end;
If FWindow then case msg.message of
WM_CREATE:If Assigned(FOnWindowCreate)then FOnWindowCreate(Self,Wnd);
WM_CLOSE :If Assigned(FOnWindowClose)then FOnWindowClose(Self,Wnd);
end;
end;//If code>=0
end;


← →
Юрий Зотов ©   (2002-03-07 12:16) [5]

Похоже, Ваш хук - это метод объекта? Это неверно, хук может быть только самостоятельной функцией, иначе в него будет неявно передаваться лишний параметр Self.


← →
Виктор Щербаков ©   (2002-03-07 12:24) [6]


> ...иначе в него будет неявно передаваться лишний параметр Self.

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


← →
Gayrus ©   (2002-03-07 16:11) [7]

Тогда где объявить эту функцию?


← →
Юрий Зотов ©   (2002-03-07 17:39) [8]

Если хук локальный - можно в модуле самого компонента, если глобальный - то только в отдельной DLL.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
1-26187
ERW
2002-04-25 16:12
2002.05.09
Как сделать переход из DBGrid-a по TabOrder-у


3-25988
Reals
2002-04-15 14:27
2002.05.09
Как можно сделать резервную копию (BackUp) базы данных


1-26190
perov
2002-04-25 09:39
2002.05.09
Сравнение двух строк


4-26311
Asker
2002-03-08 20:29
2002.05.09
Спячка/Перезагрузка WindowsXP, Win2000


4-26315
fag2000@ok.ru
2002-03-05 14:44
2002.05.09
Как правильно обрабатывать сообщения от клаватуры?




   Наверх