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

Вниз

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

 
EleKtroNik ©   (2002-10-06 18:46) [0]

Народ, здрасте.
Такая тема значит, ставлю хук на клаву.
Усе ставится, но ф-я два раза возвращает ее код!
Как эту муру исправить!!
Зарние спасибо тем кто поможет.)


 
EleKtroNik ©   (2002-10-06 18:55) [1]

Да, давно видел подобныи вопрос, но наити его не
удалось(


 
EleKtroNik ©   (2002-10-07 18:35) [2]

Что, ни кто не знает?
Жаль.("Мастера"


 
Юрий Зотов ©   (2002-10-08 11:39) [3]

Может, и мастера, может, и нет - но уж точно не телепаты.

Где код хука? Или Вы думаете, что кто-то умеет находить ошибки, не видя кода?


 
Хонь-юнь   (2002-10-08 11:53) [4]

>два раза

Button up + Button down?


 
EleKtroNik ©   (2002-10-08 22:55) [5]

2Хонь-юнь
Да именно так.

> Юрий Зотов

Поскольку Вы не телепат привожу код:
function KbH(code: Integer; wparam: Word; lparam: LongInt):longint;stdcall;
var
b:byte;
begin

// if (code<0) then
if (code<0) then
Result:=CallNextHookEx( KbHook, code, wparam,lparam )
else begin
b:=wParam;


showmessage(inttostr(b));


result:=CallNextHookEx( KbHook, code, wparam,lparam );

end;
end;

Зарание благодарен.|


 
Юрий Зотов ©   (2002-10-08 23:36) [6]

Вот теперь вижу. Две вещи.

1. Что Хонь-юнь все же телепат, поскольку угадал (но мог и не угадать, поскольку Down/Up - не единственная возможная причина).

2. Что в коде лишнего больше, чем нужного. Вот эта штука делает абсолютно то же самое.

function KbH(Code, WParam, LPparam: LongInt): LongInt; stdcall;
begin
ShowMessage(IntToStr(WParam));
Result := CallNextHookEx(KbHook, Code, WParam, LParam)
end;


 
vidiv   (2002-10-09 07:02) [7]

Народ, а кто знает как сделать системный хук без DLL? Я знаю как!


 
EleKtroNik ©   (2002-10-09 19:52) [8]

Пробовал так:
if TMsg(Pointer(lParam)^).message = WM_KEYDOWN then begin
showmessage(inttostr(wparam));

А он вообще нечего не ловит(Мать его...
Мля можен есть соображения какие?


 
Юрий Зотов ©   (2002-10-09 21:46) [9]

Если это хук на клаву (WH_KEYBOARD), то конструкция
TMsg(Pointer(lParam)^).message
по меньшей мере странная. Поскольку никак не соответствует смыслу LParam для этого типа хуков.

Формально, ошибки нет. Но вот условие
TMsg(Pointer(lParam)^).message = WM_KEYDOWN
вряд ли когда-либо выполнится.

Видимо, поэтому и "не ловит". Хорошо еще, что не дает Access Violation из-за обращения по "левому" адресу Pointer(lParam).

Проверяйте проще:
if LParam > 0 then ... // это DOWN


 
EleKtroNik ©   (2002-10-10 20:28) [10]


> Юрий Зотов

Спасибо.) Сегодня проверю.



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
1-36088
SkyN
2002-12-02 11:14
2002.12.12
Как организавать паузу, чтобы небыло эффекта


3-36062
Slawik
2002-11-25 17:27
2002.12.12
Перезапуск IB server


3-36063
ruslan_as
2002-11-25 16:02
2002.12.12
Midas.dll


1-36147
DKalinin
2002-11-30 13:14
2002.12.12
как посчитать количество строк текстового файла не пробегая его


4-36465
BSD
2002-10-29 12:40
2002.12.12
Передача сообщений из одного сервиса другому