Condividi tramite


Procedura: Chiamare una funzione Windows che accetta tipi non firmati (Visual Basic)

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

Per chiamare una funzione di Windows che accetta un tipo 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 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. Molti di questi sono definiti 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 UIntegervalori .

  5. Chiamare la funzione in modo normale. Nell'esempio seguente viene chiamata la funzione MessageBoxWindows, che accetta un numero 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 UIntegertipi di dati , ULong, UShorte SByte non fanno parte dell'indipendenza del linguaggio e dei componenti Language-Independent (CLS), pertanto il codice conforme a CLS non può utilizzare un componente che li usa.

    Importante

    Effettuare 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.

Vedere anche