Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват нажатия клавиш мультимедийной клавиатуры - [D6, Win95/98, WinME, NT4, Win2k, WinXP]


greenrul ©   (2003-05-12 17:43:00) 

Например сперва юзер нажимает свою мультимедийнуюклавишу, я получаю ее код (если у них есть код) а потом при нажатии именно этой клавиши запускаю какую-нибудь процедурку.

И можно ли каким-либо образом получить хоть порядковый номер этой клавиши, чтобы ее нормально обозвать (юзер должен видеть какую клавишу он нажимал, а ему не напишешь - hotkey id: 257)


Deus   (2003-05-16 16:59:00) [1]

Кстати, тут:
http://soft.noxious.ru/freeware/index.htm#eka
лежит прога именно для работы с мульт. клавишами....


SCHMaster   (2003-05-16 06:29:00) [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-13 14:26:00) [3]

Вообще-то у _всех_ кнопок есть коды, даже у кнопок питания на клаве - писюк именно так работает. Другое дело, до чего (до какого уровня) коды этих кнопок в винде смогут добраться. В чистом досе btw _все_ кнопки должны что-то генерить. Посмотри, какие номера кнопок каким кнопкам соответствуют, и напиши то, что написано на клаве. Единого стандарта имхо нет - каждый проихводитель (ИМХО!) куда что хочет, туда и запихивает. А вообще есть реальная возможность постить на паре-тройке реальных клавиатур? Дык метод псевдонаучного тыка еще никто неотменял ;) А если хочешь, что бы всё по стандартам было, дык имхо ничего не получится - конкретные номера кнопок вероятно знают только родные дрова конкретной клавы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо