Procedura: chiamare una funzione Windows che accetta tipi senza segno (Visual Basic)

Se si utilizza una classe, un modulo o una struttura con membri di tipo intero senza segno, è possibile accedere a questi membri con Visual Basic.

Chiamare una funzione Windows che accetta tipi senza segno

  1. Utilizzare un'istruzione Declare per indicare a Visual Basic quale libreria contiene la funzione, qual è il nome della libreria, qual è la sequenza chiamante e come convertire le stringhe durante la chiamata.

  2. Nell'istruzione Declare usare UInteger, ULong, UShorto Byte, secondo come appropriato per ogni parametro con un tipo senza segno.

  3. Consultare la documentazione relativa alla funzione di Windows che si sta chiamando per trovare i nomi e i valori delle costanti usate. A questo riguardo, molte definizioni si trovano nel file WinUser.h.

  4. Dichiarare le costanti necessarie nel codice. Molte costanti di Windows sono valori senza segno a 32 bit ed è necessario dichiarare questi As UInteger.

  5. Chiamare la funzione in modo normale. Nell'esempio seguente viene chiamata la funzione Windows MessageBox, che accetta un argomento intero senza segno.

    Public Class windowsMessage
        Private Declare Auto Function mb Lib "user32.dll" Alias "MessageBox" (
            ByVal hWnd As Integer,
            ByVal lpText As String,
            ByVal lpCaption As String,
            ByVal uType As UInteger) As Integer
        Private Const MB_OK As UInteger = 0
        Private Const MB_ICONEXCLAMATION As UInteger = &H30
        Private Const IDOK As UInteger = 1
        Private Const IDCLOSE As UInteger = 8
        Private Const c As UInteger = MB_OK Or MB_ICONEXCLAMATION
        Public Function messageThroughWindows() As String
            Dim r As Integer = mb(0, "Click OK if you see this!",
                "Windows API call", c)
            Dim s As String = "Windows API MessageBox returned " &
                 CStr(r)& vbCrLf & "(IDOK = " & CStr(IDOK) &
                 ", IDCLOSE = " & CStr(IDCLOSE) & ")"
            Return s
        End Function
    End Class
    

    È possibile testare la funzione messageThroughWindows con il codice seguente.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    

    Attenzione

    I tipi di dati UInteger, ULong,UShort e SByte non fanno parte di Indipendenza del linguaggio e componenti indipendenti dal linguaggio (CLS), quindi il codice conforme a CLS non può utilizzare un componente che li usa.

    Importante

    L’esecuzione di una chiamata a codice non gestito, ad esempio l'API (Application Programming Interface) di Windows, espone il codice a potenziali rischi per la sicurezza.

    Importante

    La chiamata all'API Di Windows richiede l'autorizzazione del codice non gestito, che potrebbe influire sull'esecuzione in situazioni di attendibilità parziale. Per altre informazioni, vedere SecurityPermission e Autorizzazioni di accesso al codice.

Vedi anche