Gewusst wie: Aufrufen einer Windows-Funktion, die vorzeichenlose Typen akzeptiert
Aktualisiert: November 2007
Wenn Sie eine Klasse, ein Modul oder eine Struktur mit Membern aus Ganzzahltypen ohne Vorzeichen verwenden, können Sie mit Visual Basic auf diese Member zugreifen.
So rufen Sie eine Windows-Funktion auf, die einen Typ ohne Vorzeichen akzeptiert
Teilen Sie Visual Basic mit einer Declare-Anweisung mit, in welcher Bibliothek die Funktion enthalten ist, welchen Namen sie in dieser Bibliothek hat, wie ihre Aufruffolge lautet und wie Zeichenfolgen bei deren Aufruf konvertiert werden.
Verwenden Sie in der Declare-Anweisung nach Bedarf UInteger, ULong, UShort oder Byte für jeden Parameter mit einem Typ ohne Vorzeichen.
Ziehen Sie die Dokumentation für die aufzurufende Windows-Funktion zu Rate, um die Namen und die Werte der von ihr verwendeten Konstanten zu bestimmen. Viele davon sind in der Datei WinUser.h definiert.
Deklarieren Sie die erforderlichen Konstanten im Code. Viele Windows-Konstanten sind 32-Bit-Werte ohne Vorzeichen. Sie sollten diese als AsUInteger deklarieren.
Rufen Sie die Funktion wie gewohnt auf. Im folgenden Beispiel wird die Windows-Funktion MessageBox aufgerufen, die ein Ganzzahlargument ohne Vorzeichen akzeptiert.
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
Sie können die Funktion messageThroughWindows mit dem folgenden Code testen.
Public Sub consumeWindowsMessage() Dim w As New windowsMessage w.messageThroughWindows() End Sub
Vorsicht: Die Datentypen UInteger, ULong, UShort und SByte sind nicht Teil der CLS (CLS (Common Language Specification)), sodass CLS-kompatibler Code keine Komponente verwenden kann, die diese Datentypen nutzt.
Sicherheitshinweis: Bei einem Aufruf an nicht verwalteten Code, wie z. B. die Windows-API, wird der Code potenziellen Sicherheitsrisiken ausgesetzt.
Sicherheitshinweis: Der Aufruf der Windows-API erfordert eine Berechtigung für nicht verwalteten Code. Dies könnte sich auf ihre Ausführung in teilweise vertrauenswürdigen Kontexten auswirken. Weitere Informationen finden Sie unter SecurityPermission und unter Codezugriffsberechtigungen.
Siehe auch
Aufgaben
Gewusst wie: Optimieren der Speicherung von positiven ganzen Zahlen mit vorzeichenlosen Typen
Exemplarische Vorgehensweise: Aufrufen von Windows-APIs
Referenz
Datentyp: Zusammenfassung (Visual Basic)