Форум: "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