Delen via


Procedure: Een Windows-functie aanroepen die niet-ondertekende typen gebruikt (Visual Basic)

Als u een klasse, module of structuur gebruikt met leden van niet-ondertekende gehele getallen, hebt u toegang tot deze leden met Visual Basic.

Een Windows-functie aanroepen die een niet-ondertekend type gebruikt

  1. Gebruik een Declare-instructie om Visual Basic te vertellen welke bibliotheek de functie bevat, wat de naam ervan in die bibliotheek is, wat de aanroepvolgorde is en hoe u tekenreeksen converteert wanneer u deze aanroept.

  2. Gebruik in de Declare instructie , gebruik UInteger, ULongof UShortByte indien van toepassing voor elke parameter met een niet-ondertekend type.

  3. Raadpleeg de documentatie voor de Windows-functie die u aanroept om de namen en waarden te vinden van de constanten die worden gebruikt. Veel van deze zijn gedefinieerd in het bestand WinUser.h.

  4. Declareer de benodigde constanten in uw code. Veel Windows-constanten zijn 32-bits niet-ondertekende waarden en u moet deze As UIntegerdeclareren.

  5. Roep de functie op de normale manier aan. In het volgende voorbeeld wordt de Windows-functie MessageBoxaangeroepen, waarbij een niet-ondertekend geheel getal wordt gebruikt.

    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
    

    U kunt de functie messageThroughWindows testen met de volgende code.

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

    Let op

    De UIntegergegevenstypen , ULongen SByteUShortgegevenstypen maken geen deel uit van de cls (Language Independence and Language-Independent Components), zodat cls-compatibele code geen onderdeel kan gebruiken dat ze gebruikt.

    Belangrijk

    Als u een aanroep maakt naar onbeheerde code, zoals de Api (Windows Application Programming Interface), wordt uw code blootgesteld aan mogelijke beveiligingsrisico's.

    Belangrijk

    Voor het aanroepen van de Windows-API is een niet-beheerde codemachtiging vereist, wat van invloed kan zijn op de uitvoering ervan in situaties met gedeeltelijke vertrouwensrelaties. Zie en Machtigingen voor codetoegang voor meer informatieSecurityPermission.

Zie ook