Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

Значения из регистров 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
3-1096816746
Muchacho
2004-10-03 19:19
2004.11.07
Unicode в InterBase


1-1098407275
Кто---то
2004-10-22 05:07
2004.11.07
А стандартный СпинЭдит с флоатами не работает что ли ? Или


14-1098438631
sergei
2004-10-22 13:50
2004.11.07
Учитель по Делфи Ау!!!!


1-1098531353
Grundic
2004-10-23 15:35
2004.11.07
Самая страшная и темная для меня тема: динам. создание объектов.


14-1098119002
Беспечный_Ангел
2004-10-18 21:03
2004.11.07
Novell NetWare и сервер-почтовик. Помогите, плиз!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский