![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перехватить мультимедиа клавиши на клавиатуре? [D5, D6, D7, Win2k, WinXP]
Darthman © (2004-08-15 02:04:00)Сабж. Нужно повесить хук, чтобы работало при нажатии в ЛЮБОЙ программе. Как не пробовал - не выходит. Может быть есть мысли?
Кириешки (2004-08-16 01:05:00) [1]Хм...
Ну, попробуй так :
var
h:hhook;
function Proc(code:integer; wParam:WPARAM; lParam:LPARAM):
lresult;stdcall;
var c:array[0..255] of char;
nScan:integer;
begin
if (code>=0)and(teventmsg(pointer(lparam)^).message=wm_keydown) then begin
nScan:=hibyte((teventmsg(pointer(lparam)^).paramL));
nscan:=nscan shl 16;
GetKeyNameText(nScan,c,256);
form1.ListBox1.Items.Add(c);
end;
result:=callnexthookex(h,code,wparam,lparam);
end;
procedure FormCreate();
begin
h:=setwindowshookex(WH_JOURNALRECORD,@Proc,hinstance,0);
caption:=inttostr(h);
end;
procedure FormClose();
begin
unhookwindowshookex(h);
end;
end.
Вроде должно работать, но только за сканирование не ручаюсь.
Darthman (2004-08-15 17:56:00) [2]вопрос как? мне бы под одну конкретную клаву хотябы.
TUser (2004-08-15 15:19:00) [3]
> Другой способ (правда не знаю сработает или нет) - написать
> некий "низкоуровневый драйвер клавиатуры"...
Это вряд ли. С этими клавишами каждый драйвер по-своему работает, поэтому написать что-то универсаьное затруднительно.
DeadMeat (2004-08-15 14:55:00) [4]ИМХО на любую клавиатуру вряд ли найдешь метод... Только через их собственные драйвера (или что там у них), те что вместе идут. Придется копать каждый из них, и составить некий список.
Другой способ (правда не знаю сработает или нет) - написать некий "низкоуровневый драйвер клавиатуры"...
---
...Death Is Only The Begining...