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

Значения из регистров AH, AL при срабатывании hook a   Найти похожие ветки 

 
Alexis ©   (2004-10-03 11:41) [0]

Это кусочек кода из примера, приведенного в статье А.Павлова про установку hook"ов.
Ф-ция получает уведомление о нажании клавишы. Насколько знаю, при нажатии скан-код помещается в регистр AH, а ASCII-код в AL.
Я пытаюсь получить значения из регистров, например при нажатии <ENTER>, но MessageBox почему-то не выводится...
В чем может быть ошибка?

function KeyboardProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
ByteAH, ByteAL : Byte;
begin

 if code < 0 then
 begin
   Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
   Exit;
 end;

 {if (  ((lParam and KF_UP)=0) and (wParam>=65) and (wParam<=90)  ) OR (  ((lParam and KF_UP)=0) and (wParam=VK_SPACE)  ) then}
  if True then //любая клавиша
  begin
   asm
    mov &ByteAH, AH
    mov &ByteAL, AL
   end;
   if ByteAL = $0000000D then //ASCII код равен 13
    MessageBox(0, "<ENTER> pressed", "hook", MB_OK);
  end;

 CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
 Result:= 0;

end;


 
Polevi ©   (2004-10-03 12:11) [1]

хук не является обработчиком прерывания


 
Alexis ©   (2004-10-03 12:14) [2]

2 Polevi-да, я понимаю это. Но ведь функция-фильтр выполняется после определенного события, в данном случае, нажатия клавишы, а нажатие клавишы ведь заносит в регистры скан-коды, которые можно оттуда считать...


 
VMcL ©   (2004-10-03 13:01) [3]

>>Alexis ©  (03.10.04 12:14) [2]

>нажатие клавишы ведь заносит в регистры скан-коды

С какого бадуна? Директива stdcall указывает на то, что параметры передаются через стек.


 
Alexis ©   (2004-10-03 13:13) [4]

2 VMcL-хорошо, тогда я поставлю вопрос так : можно ли при перехвате нажатия клавишы определить откуда-либо ее скан-код и ASCII-код, вырабатываемые клавиатурой?


 
GuAV ©   (2004-10-03 14:36) [5]


> Директива stdcall указывает на то, что параметры передаются
> через стек.

...А результат как раз через аккумулятор.


 
VMcL ©   (2004-10-03 19:53) [6]

>>GuAV ©  (03.10.04 14:36) [5]

Только перед возвратом. В процессе исполнения функции аккумулятор может использоваться как угодно.


 
DrPass ©   (2004-10-03 20:57) [7]


> можно ли при перехвате нажатия клавишы определить откуда-либо
> ее скан-код и ASCII-код, вырабатываемые клавиатурой?

А lparam в функцию передается для чего?



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

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



Память: 0.46 MB
Время: 0.024 c
1-1098632099
span
2004-10-24 19:34
2004.11.07
Использование PGP в delphi


14-1098426785
gn
2004-10-22 10:33
2004.11.07
Модификация автомата Калашникова:


8-1091791010
SNV-Soft
2004-08-06 15:16
2004.11.07
Масштабирование формы


14-1097843522
dreamse
2004-10-15 16:32
2004.11.07
Open Source софт для клубов


14-1098027858
olookin
2004-10-17 19:44
2004.11.07
И еще... Вероятно, я просто отстал от жизни, но....




   Наверх