Condividi tramite


Procedura: chiamare una funzione Windows che accetta tipi senza segno

Aggiornamento: novembre 2007

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

Per chiamare una funzione Windows che accetta tipi senza segno

  1. Utilizzare una Istruzione Declare per indicare a Visual Basic la libreria che contiene la funzione in questione, il nome della funzione nella libreria specifica, la relativa sequenza di chiamata e la modalità di conversione delle stringhe in fase di chiamata della funzione.

  2. Nell'istruzione Declare utilizzare come richiesto UInteger, ULong, UShort o Byte per ciascuno dei parametri con tipi senza segno.

  3. Consultare la documentazione relativa alla funzione Windows chiamata per trovare i nomi e i valori delle costanti da essa utilizzati, gran parte dei quali è definita nel file WinUser.h.

  4. Dichiarare le costanti necessarie nel codice. Molte costanti Windows sono valori a 32 bit senza segno e devono essere dichiarate AsUInteger.

  5. Chiamare la funzione normalmente. Nell'esempio che segue viene chiamata la funzione Windows MessageBox, che accetta un argomento integer 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 verificare la funzione messageThroughWindows con il codice riportato di seguito.

    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 CLS (Specifiche CLS (Common Language Specification)). Pertanto, il codice compatibile con CLS non può utilizzare un componente che impiega questi tipi.

    Nota sulla sicurezza:

    Una chiamata a codice non gestito, quale un'API (Application Programming Interface) Windows, lo espone a potenziali rischi di protezione.

    Nota sulla sicurezza:

    Quando si chiama l'API Windows è necessaria l'autorizzazione di accesso al codice non gestito, che può influenzarne l'esecuzione in situazioni di attendibilità parziale. Per ulteriori informazioni, vedere SecurityPermission ePermessi di accesso al codice.

Vedere anche

Attività

Procedura: ottimizzare l'archiviazione di valori integer positivi con tipi senza segno

Procedura dettagliata: chiamata delle API di Windows

Riferimenti

Riepilogo dei tipi di dati (Visual Basic)

Tipo di dati Integer (Visual Basic)

Tipo di dati UInteger

Istruzione Declare