Oppure

Loading
26/01/16 10:41
Neo1986
Buongiorno a tutti!

E' da parecchio che non scrivevo più!

Vorrei chiedervi un consiglio, sto realizzando una dll per la comunicazione con periferiche USB Hid, riesco tramite la libreria hid.dll a fare tutto cio che è necessario ma purtroppo mi sono bloccato a questo punto :

-) Una volta avviata la comunicazione con la periferica HID, per sapere quando viene connessa o disconnessa, molti utenti sui vari forum utilizzano il metodo :

<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Shared Function RegisterDeviceNotification _
	 (ByVal hRecipient As IntPtr, _
	 ByVal NotificationFilter As IntPtr, _
	 ByVal Flags As Int32) _
	 As IntPtr
	End Function


per ricevere i vari eventi della periferica usb in questione.

Il Problema è il parametro ByVal hRecipient As IntPtr, praticamete tutti gli utenti dei forum gli passano come parametri Me.Handle e gestiscono gli eventi nel form principale dell'applicazione in questo modo :

Protected Overrides Sub WndProc(ByRef m As Message)

        Try
            ' The OnDeviceChange routine processes WM_DEVICECHANGE messages.

            If m.Msg = WM_DEVICECHANGE Then
                OnDeviceChange(m)
                'Trace.WriteLine("CAMBIO STATO PERIFERICA")
            End If

            ' Let the base form process the message.

            MyBase.WndProc(m)

        Catch ex As Exception
            DisplayException(Me.Name, ex)
            Throw
        End Try

    End Sub


Volendo integrare tutto in una classe, non posso utilizzare WndProc.... secondo voi come potrei ovviare al problema?

PS. un'alternativa sarebbe quella di controllare 'a mano' (in un piccolo loop temporizzato) lo stato della periferica usb.
aaa