Сегодня я раскажу о работе с клавиатурой,
ведь без клавиатуры не бойтись в играх. Приступим к
реалзации.
1. Создайте новый проект.
2. Поставим на форму таймер (name=tmrKey,
interval=10, enabled=false) и ListBox (name=lstkeys)
растянув на всю форму.
3. Подключим библиотеку DirectX 8
(Project-> References...-> DirectX 8 for Visual
Basic Type Library), если ее там нет, то установите
DirectX 8 или выше.
4. Сначало объявим переменные, необходимые
для работы.
Dim dx As New DirectX8'объект DirectX Dim di As DirectInput8 'объект DirectInput Dim diDEV As DirectInputDevice8 'устройство DirectInput Dim diState As DIKEYBOARDSTATE
Dim iKeyCounter As Integer
Dim aKeys(255) As String
Теперь начинаем заполнять Form_Load Создаём объект DirectInput
Set di = dx.DirectInputCreate()
Устанавливаем обработчик ошибок
If Err.Number
<> 0 Then
MsgBox
"Ошибка инициализации DirectInput", vbApplicationModal
End
End If
Создаем устройтсво DirectInput на основе системной клавиатуры(GUID_SysKeyboard)
Set diDEV
= di.CreateDevice("GUID_SysKeyboard")
Задаём формат данных
diDEV.SetCommonDataFormat
DIFORMAT_KEYBOARD
Теперь укажем где использовать DirectInput и установим некоторые
параметры для работы с клавиатурой
diDEV.SetCooperativeLevel
Me.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
Показываем форму
me.show
Активируем DirectInput !!!! Не забудьте поставить diDEV.UnAcquire
в form_unload для избежания ошибок при последующем запуске DirectInput
diDEV.Acquire
Включаем Timer
tmrKey.Enabled
= True
На этом Заканчивается Sub Form_Load Вод код события Timer(sub
tmrKeys_timer)
Private Sub
tmrKey_Timer()
lstKeys.Clear
'очистка списка
diDEV.GetDeviceStateKeyboard diState 'узнаем
текущий статус клавиатуры
For
iKeyCounter = 0 To 255 'Проверка
всевозможных клавиш
If
diState.Key(iKeyCounter) <> 0 Then 'Если
клавиша нажата
lstKeys.AddItem
KeyNames(iKeyCounter) 'добавляем
её в список
End
If
Next
DoEvents
End Sub
Для распознавание какая клавиша нажата создадим функции
Программа готова, жмите F5 если все правильно сделано то нажмите
несколько клавиш и вы увидите что эти клавиши появляются в
списке. Для самых нетерпеливых исходники
кода здесь