Я пытаюсь типа драйвер создать, но есть одна проблема:
Option Explicit
Dim dx As New DirectX8 'îáúåêò DirectX
Dim di As DirectInput8 'îáúåêò DirectInput
Dim diDev As DirectInputDevice8 'óñòðîéñòâî DirectInput
Dim diState As DIJOYSTATE2 'ñòðóêòóðà, ñîäåðæàùàÿ ñîñòîÿíèå êëàâèàòóðû
Private Sub Form_Load()
Me.Show
If Not InitDI() Then
MsgBox "Íåâîçìîæíî èíèöèàëèçèðîâàòü DirectInput."
End
End If
Timer1.Enabled = True
End Sub
Public Function InitDI() As Boolean
On Local Error Resume Next
Set di = dx.DirectInputCreate()
If di Is Nothing Then Exit Function
Set diDev = di.CreateDevice("guid_SysMouse")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
вот в этой строке где стоит guid_SysMouse должно что-то другое стоять
вовсех монуалах по DirectInput
написано что для мышки и клавиатуры есть стандартные значения (которое мы выше и наблюдаем)
а для джойстика мол надо находить с помошью функции EnumDevices()
ну нету такой функции на VB есть только GetDIDevices()
я делаю следуюшее:
Set frrf = di.GetDIDevices(DI8DEVCLASS_GAMECTRL, DIEDFL_ATTACHEDONLY)
Set diDev = di.CreateDevice(frrf)
VB ругаеться мол тип не тот ну это то понятно а как по другому я не знаю
If diDev Is Nothing Then Exit Function
diDev.SetCommonDataFormat DIFORMAT_JOYSTICK2
diDev.SetCooperativeLevel Me.hWnd, DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND
diDev.Acquire
InitDI = True
End Function
Public Sub CleanUp()
diDev.Unacquire
Set diDev = Nothing
Set di = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
CleanUp
End Sub
Private Sub Timer1_Timer()
Dim iKeyCounter As Integer
diDev.GetDeviceStateJoystick2 diState
List1.Clear
For iKeyCounter = 0 To 127
If diState.Buttons(iKeyCounter) <> 0 Then
List1.AddItem KeyNames(iKeyCounter)
End If
Next
End Sub
А теперь в крадце о том, что выше написано мне просто нужно узнать какую кнопку я нажимаю на джойстике.
Джойстик (для тех кто разбираеться) MB-25 (LPT+Usb) (он похож на джойстик от плейстэйшон) подключен к LPT порту.
И на последок ещё один вопрос если адрес LPT1 порта 0X378 то у USB какой?