Dela via


Anvisningar: Anropa en Windows-funktion som tar osignerade typer (Visual Basic)

Om du använder en klass, modul eller struktur som har medlemmar av osignerade heltalstyper kan du komma åt dessa medlemmar med Visual Basic.

Anropa en Windows-funktion som tar en osignerad typ

  1. Använd en Deklarera-instruktion för att tala om för Visual Basic vilket bibliotek som innehåller funktionen, vad dess namn är i biblioteket, vad dess anropssekvens är och hur du konverterar strängar när du anropar den.

  2. I -instruktionen Declare använder du UInteger, ULong, UShorteller Byte efter behov för varje parameter med en osignerad typ.

  3. Läs dokumentationen för den Windows-funktion som du anropar för att hitta namn och värden för de konstanter som används. Många av dessa definieras i filen WinUser.h.

  4. Deklarera nödvändiga konstanter i koden. Många Windows-konstanter är 32-bitars osignerade värden och du bör deklarera dessa As UInteger.

  5. Anropa funktionen på normalt sätt. I följande exempel anropas Windows-funktionen MessageBox, som tar ett osignerat heltalsargument.

    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
    

    Du kan testa funktionen messageThroughWindows med följande kod.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    

    Varning

    Datatyperna , , och ingår inte i CLS (Language Independence and Language-Independent Components), så CLS-kompatibel kod kan inte använda en komponent som använder dem.SByteUShortULongUInteger

    Viktigt!

    Om du anropar ohanterad kod, till exempel API:et (Windows Application Programming Interface), exponeras koden för potentiella säkerhetsrisker.

    Viktigt!

    Att anropa Windows-API:et kräver ohanterad kodbehörighet, vilket kan påverka körningen i situationer med partiellt förtroende. Mer information finns i SecurityPermission och Kodåtkomstbehörigheter.

Se även