Condividi tramite


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 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 As UInteger.

  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
    
    Nota di avvisoAttenzione

    I tipi di dati UInteger, ULong, UShort e SByte non fanno parte di CLS (Common Language Specification). Pertanto, il codice compatibile con CLS non può utilizzare un componente che impiega questi tipi.

    Nota sulla sicurezzaNota sulla sicurezza

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

    Nota sulla sicurezzaNota 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 e Autorizzazioni di accesso al codice.

Vedere anche

Attività

Procedura: ottimizzare l'archiviazione di Integer positivi con tipi senza segno (Visual Basic)

Procedura dettagliata: chiamata delle API di Windows (Visual Basic)

Riferimenti

Riepilogo dei tipi di dati (Visual Basic)

Tipo di dati Integer (Visual Basic)

Tipo di dati UInteger

Istruzione Declare