Текущий архив: 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