Текущий архив: 2003.07.28;
Скачать: CL | DM;
Вниз
Перехват нажатия клавиш мультимедийной клавиатуры - Найти похожие ветки
← →
greenrul © (2003-05-12 17:43) [0]Например сперва юзер нажимает свою мультимедийную клавишу, я получаю ее код (если у них есть код) а потом при нажатии именно этой клавиши запускаю какую-нибудь процедурку.
И можно ли каким-либо образом получить хоть порядковый номер этой клавиши, чтобы ее нормально обозвать (юзер должен видеть какую клавишу он нажимал, а ему не напишешь - hotkey id: 257)
← →
Deus (2003-05-13 14:26) [1]Вообще-то у _всех_ кнопок есть коды, даже у кнопок питания на клаве - писюк именно так работает. Другое дело, до чего (до какого уровня) коды этих кнопок в винде смогут добраться. В чистом досе btw _все_ кнопки должны что-то генерить. Посмотри, какие номера кнопок каким кнопкам соответствуют, и напиши то, что написано на клаве. Единого стандарта имхо нет - каждый проихводитель (ИМХО!) куда что хочет, туда и запихивает. А вообще есть реальная возможность постить на паре-тройке реальных клавиатур? Дык метод псевдонаучного тыка еще никто неотменял ;) А если хочешь, что бы всё по стандартам было, дык имхо ничего не получится - конкретные номера кнопок вероятно знают только родные дрова конкретной клавы.
← →
SCHMaster © (2003-05-16 06:29) [2]Ага. Бился я над этой траблой - у меня SVEN. Отключал (убивал) управляющую программу, HOOK ставил и че только не делал - все перехватывалось, только вот уже после того, действия были обработаны. Но разобрался. При установке драйвера и упр. проги устанавливается еще одна прога и запускается как сервис (WinXP).
Нужно остановить этот сервис и тогда все работает - ставиш Хук на клаву и порядок. Коды клавишь легко отлавливаются. Кстати, дрова на клаву можно не ставить.
Хук примерно такой
function ShellHook(Code: Integer; ParamW: WPARAM; ParamL: LPARAM): LRESULT; stdcall;
var
Rslt:LRESULT;
begin
if (Code >= 0) and (ParamL and $40000000 = 0) then
BEGIN
if ParamW in [95,173,174,175,176,177,178,179,183,255] // коды моих клавишь
then
begin
SendMessage(Data^.AppWnd, wm_HookMessage, ParamW, ParamL);
if Process = False then Result:=1
else Result := 0;
end;
END
ELSE
if Code < 0 then
Result := CallNextHookEx(Data^.OldHook, Code, ParamW, ParamL);
end;
← →
Deus © (2003-05-16 16:59) [3]Кстати, тут:
http://soft.noxious.ru/freeware/index.htm#eka
лежит прога именно для работы с мульт. клавишами....
Страницы: 1 вся ветка
Текущий архив: 2003.07.28;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.015 c