Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie eine Klasse, ein Modul oder eine Struktur verwenden, die Elemente nicht signierter ganzzahliger Typen enthält, können Sie mit Visual Basic auf diese Member zugreifen.
So rufen Sie eine Windows-Funktion auf, die einen nicht signierten Typ verwendet
Verwenden Sie eine Declare-Anweisung , um Visual Basic mitzuteilen, welche Bibliothek die Funktion enthält, wie sie in dieser Bibliothek heißt, wie ihre Aufrufsequenz ist, und wie Zeichenfolgen beim Aufrufen konvertiert werden.
Verwenden Sie in der
Declare
-AnweisungUInteger
,ULong
,UShort
oderByte
entsprechend für jeden Parameter mit einem nicht signierten Typ.In der Dokumentation für die Windows-Funktion, die Sie aufrufen, finden Sie die Namen und Werte der von ihr verwendeten Konstanten. 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, und Sie sollten diese
As UInteger
deklarieren.Rufen Sie die Funktion normal auf. Im folgenden Beispiel wird die Windows-Funktion
MessageBox
aufgerufen, die ein nicht signiertes ganzzahliges Argument verwendet.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
UInteger
,ULong
,UShort
undSByte
Datentypen sind nicht Teil der Language Independence and Language-Independent Components (CLS), sodass CLS-kompatibler Code keine Komponente verwenden kann, die diese verwendet.Von Bedeutung
Wenn Sie einen Aufruf an nicht verwalteten Code ausführen, z. B. die Windows-API (Application Programming Interface), setzt Ihren Code potenziellen Sicherheitsrisiken aus.
Von Bedeutung
Das Aufrufen der Windows-API erfordert nicht verwaltete Codeberechtigungen, die sich auf die Ausführung in teilweise vertrauenswürdigen Situationen auswirken können. Weitere Informationen finden Sie unter SecurityPermission und Berechtigungen für den Codezugriff.