Salve a tutti
Volevo utilizzare un joystick per dare input al computer per il mio programma, e spulciando il web ho trovato le librerie DirectX, in particolare la classe DirectInput, molto utili, e in effetti lo sono (visto che sono fatte apposta). Ho scritto questo codice:
codice:
Public Class Joystick
    Dim Devices As Microsoft.DirectX.DirectInput.DeviceList
    Dim dev As Microsoft.DirectX.DirectInput.DeviceInstance
    Dim gamepadDevice As Microsoft.DirectX.DirectInput.Device
    Dim JoyState As Microsoft.DirectX.DirectInput.JoystickState
    Sub New()
        Devices = Microsoft.DirectX.DirectInput.Manager.GetDevices(Microsoft.DirectX.DirectInput.DeviceClass.GameControl, Microsoft.DirectX.DirectInput.EnumDevicesFlags.AttachedOnly)
        Devices.Reset()
        Devices.MoveNext()
        dev = Devices.Current
        gamepadDevice = New Microsoft.DirectX.DirectInput.Device(dev.InstanceGuid)
    End Sub

    Public Function GetPressedButtons() As Byte()
        gamepadDevice.Acquire()
        JoyState = gamepadDevice.CurrentJoystickState
        Return JoyState.GetButtons
    End Function

    Public Function GetAxisValue() As Integer()
        Dim Values(1) As Integer
        gamepadDevice.Acquire()
        JoyState = gamepadDevice.CurrentJoystickState
        Values(0) = JoyState.X
        Values(1) = JoyState.Y
        Return Values
    End Function

End Class
Il problema è che la funzione GetPressedButtons mi restitusice 128 byte tutti uguali a 0 sempre (in teoria dovrebbero essere tanti quanti i bottoni del joystick, cioè 8). Perchè non va?
Secondo problema: si potrebbe generare un evento quando un tasto del joystick viene premuto?
Avevo notato nella classe Device il metodo .SetNotificationEvent che richiede come parametro un System.WaitHandle. Può essere utile? Come posso fare?

Grazie a chiunque provi a rispondermi