Главная страница
    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.038 c
3-1097329515
Pashkerton
2004-10-09 17:45
2004.11.07
Выборка из временной таблицы


3-1097224039
Koala
2004-10-08 12:27
2004.11.07
Временные таблицы в Firebird 1.5.1


9-1089041642
Micke
2004-07-05 19:34
2004.11.07
Split Screen с DelphiX


14-1097991894
SkyRanger
2004-10-17 09:44
2004.11.07
История Руси/России правда и ложь


3-1097328611
HotIce
2004-10-09 17:30
2004.11.07
База Данных Access: ADO или BDE?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский