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
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.
Nell'istruzione Declare utilizzare come richiesto UInteger, ULong, UShort o Byte per ciascuno dei parametri con tipi senza segno.
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.
Dichiarare le costanti necessarie nel codice. Molte costanti Windows sono valori a 32 bit senza segno e devono essere dichiarate AsUInteger.
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)