Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Работа с нестандартной клавиатурой Добавлено: 20.03.07 14:42  

Автор вопроса:  Arseny | ICQ: 298826769 
Имеется клава Defender KM-970.
На ней присутствуют 18 (не считая 3 управления питанием) кнопок. Стандартные дрова позволяют указать действие только на 6 из них, причем из выбора действий - только либо запуск программы, либо урл, либо стандартная команда драйвера.
Насчет вопроса вы наверное уже догадались: можно состряпать СВОЮ программу для обработки действий клавиатуры? причем желательно на VB6.
Ответы вроде "DDK тебе в руки" не приветствуются.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 20.03.07 16:41
Крутая клава. Мож фотку прислать? Я вот меньше чем 103 клавиши в жизни не видел. +))

теперь в тему: если ты имеешь ввиду DirectX под DDK, то ты ошибаешься, как раз DirectInput тебе будет в пору. Даже седьмой.

Ответить

Номер ответа: 2
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 20.03.07 17:57
теперь в тему: если ты имеешь ввиду DirectX под DDK

При этом, сильно не в тему. Что такое DDK, можно было выяснить и самому, вместо упоминания не к месту DirectX. Равно как и найти в инете фотку Defender KM-970, коих немало.

можно состряпать СВОЮ программу для обработки действий клавиатуры?

Ответ на этот вопрос зависит от того, что делают те самые стандартные дрова при нажатии этих клавиш. Посылают ли они что-то в системную очередь сообщений. Если нет, то нет; если да, это регистрируется как простое нажатие простой клавиши.

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 20.03.07 19:15
При этом, сильно не в тему. Что такое DDK, можно было выяснить и самому, вместо упоминания не к месту DirectX.
Я не утверждал точно, что DDk - это DirectX, у меня возникла первая мысль о нем.
Равно как и найти в инете фотку Defender KM-970, коих немало.
Счас посмотрим, что это за мутант)
Ответ на этот вопрос зависит от того, что делают те самые стандартные дрова при нажатии этих клавиш. Посылают ли они что-то в системную очередь сообщений. Если нет, то нет; если да, это регистрируется как простое нажатие простой клавиши.
И поскольку дрова у всех нормальных людей не паленые, и народ, который создавал клаву, позаботился о ее работоспособности, то ответ очевиден, и в этом случае лучший вариант — использовать DirectInput, незаменимый помошник в денном деле. Хотя и API-функция GetAsyncKeyState может спасти в данной ситуации, всеже рекомендую DirectInput.

P.S.
И что же есть все-таки DDK?

Ответить

Номер ответа: 4
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #4 Добавлено: 20.03.07 19:33
GetAsyncKeyState

Я пробовал, она на этих кнопках вообще молчит...

Ответить

Номер ответа: 5
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #5 Добавлено: 20.03.07 19:39
Я вот меньше чем 103 клавиши в жизни не видел

А я вот на таких оч-чень много времени провел:
БК-0010, ZX Spectrum, Агат....

И что же есть все-таки DDK?

Driver Development Kit

Ответить

Номер ответа: 6
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #6 Добавлено: 20.03.07 20:45
Да, кстати, ежели просматривать нажатие клавиш на событии KeyUp или KeyDown, то все дополнительные кнопки выдают KeyCode=251

Ответить

Номер ответа: 7
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #7 Добавлено: 20.03.07 22:06
' противно, конечно, но что выдает клава при этом
Sub main()
Dim mess As MSG
Do Until GetMessage(mess, 0, 0, 0) = 0
       Call TranslateMessage(mess)
       Call DispatchMessage(mess)
       If mess.message = WM_KEYDOWN Then
        ;Debug.Print mess.lParam & " " & mess.wParam
       End If
Loop
End Sub

Ответить

Номер ответа: 8
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #8 Добавлено: 20.03.07 22:47
По порядочку:
Это - переназначаемые кнопки(стандартной прогой):
1-я кнопка 23724033 166 'IE Back
2-я кнопка 23658497 167 'IE Forward
3-я кнопка 23592961 169 'IE Stop
4-я кнопка 23527425 168 'IE Refresh

А это - нет:
17825793 177 'Previous
18415617 176 'Next
19005441 179 'Play/Pause
19136513 178 'Stop

Хм... в общем то все отображаются. :)
Так мне чего, этими цифирями оперировать?
И, кстати, на некоторые кнопочки привязаны горячие клавиши windows, типа поиск, запуск почтового клиента и т.п. Можно ли их отрубить в windows'e?

Ответить

Номер ответа: 9
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #9 Добавлено: 20.03.07 23:13
Э-э-э... А из других приложений енто событие не ловится... Как быть?

Ответить

Номер ответа: 10
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #10 Добавлено: 21.03.07 00:03
писать dll, в ней хук на клаву. Exe в автозагрузку, и обрабатывать хук.

Ответить

Номер ответа: 11
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #11 Добавлено: 21.03.07 00:34
Насчет цифирей. Все они документированы.
И раз уж они попадают в цикл сообщений, значит можно их переназначить или заблокировать до того как они будут транслироваться системой.

Ответить

Номер ответа: 12
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #12 Добавлено: 21.03.07 13:08
Всех благодарю, будем копать глобальные хуки...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам