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

  1. 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.

  2. Verwenden Sie in der Declare-Anweisung nach Bedarf UInteger, ULong, UShort oder Byte für jeden Parameter mit einem Typ ohne Vorzeichen.

  3. 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.

  4. Deklarieren Sie die erforderlichen Konstanten im Code. Viele Windows-Konstanten sind 32-Bit-Werte ohne Vorzeichen. Sie sollten diese als AsUInteger deklarieren.

  5. 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)

Integer-Datentyp (Visual Basic)

UInteger-Datentyp

Declare-Anweisung