Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1098688968
MadSnake
2004-10-25 11:22
2004.11.07
запуск другого приложения из service-приложения


14-1098162606
N3Kt0
2004-10-19 09:10
2004.11.07
Asm


1-1098673588
Wood
2004-10-25 07:06
2004.11.07
Программное переключение


9-1088328168
Uns
2004-06-27 13:22
2004.11.07
Mipmapping в OpenGL


6-1093549534
Jetus
2004-08-26 23:45
2004.11.07
Приём почты