Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Дополнительные мультимедийные кнопки на клаве


Автор: DriveSoftware 21.12.2003, 17:23
Как же их ловить? Можно ли воспользоваться функцией GetAsyncKeyState ?

Автор: Полудненко Олег 21.12.2003, 19:59
DriveSoftware чё енто за функция я не знаю, но поидее нуна копать в сторону работы с дровишками ентой клавы

Автор: <Spawn> 21.12.2003, 20:56
На моей клаве обычным способом ловится все.

Автор: DriveSoftware 21.12.2003, 21:19
<Spawn>

Что это за обычный способ ? smile.gif

Автор: <Spawn> 21.12.2003, 22:21
Код
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 ShowMessage(IntToStr(Key))
end;

Автор: Полудненко Олег 21.12.2003, 22:54
<Spawn> интересно, а какой код выдаётся на нажатие кнопки Play??? 255!!! И при Mute тоже, и при всех остальных нестандартных кнопках тоже 255!!!!!

Автор: <Spawn> 21.12.2003, 23:07
Это все, видимо, зависит от клавы(и ее драйвера). Вот все мои :

Код
//back - 166
//forward - 167
//stop - 169
//refresh - 168
//search - 170
//home - 172
//mail - 180
//sound on\off - 173
//vol down - 173
//vol up - 174
//play\pause - 179
//stop - 178
//перемотка влево - 177
//перемотка вправо - 176
//sleep - 95

Автор: DriveSoftware 22.12.2003, 01:18
<Spawn> попробуй пожалуйста их ловить с помощью GetAsyncKeyState,
а то у меня самой такой клавы нет, а очень нада smile.gif

Автор: <Spawn> 22.12.2003, 08:41
GetAsynKeyState на сколько я понял, прочитав сейчас справку, используется для получения состояния кнопки(или комбинации кнопок типа Ctrl + Shift + A). Но для этого необходимо знать ее код smile.gif Так что если ты узнаешь коды этих свох кнопочек, то попробуй поставить таймер с небольшим интервалом и делай примерно так(если это вообще поможет):

Код
begin
rslt := GetAsyncKeyState(Key);
//а затем, в зависимости от результата, определяешь в каком состоянии кнопка
end;

Автор: DriveSoftware 22.12.2003, 20:34
<Spawn> попробуй например так:

в таймере:

begin
//vol up - 174
IF GetAsyncKeyState(174)<>0 Then ShowMessage('Vol Up');
end;

нажми на клаве Vol Up

Я именно таким способом перехватывал всю клавиатуру в проге smile.gif

Автор: <Spawn> 22.12.2003, 20:47
DriveSoftware Дак я это понял уже)) Утром когда проверял все ловилось.

Автор: DriveSoftware 22.12.2003, 21:51
Спасибо smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)