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
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.
Gebruik in de
Declare
instructie , gebruikUInteger
,ULong
ofUShort
Byte
indien van toepassing voor elke parameter met een niet-ondertekend type.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.
Declareer de benodigde constanten in uw code. Veel Windows-constanten zijn 32-bits niet-ondertekende waarden en u moet deze
As UInteger
declareren.Roep de functie op de normale manier aan. In het volgende voorbeeld wordt de Windows-functie
MessageBox
aangeroepen, 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
UInteger
gegevenstypen ,ULong
enSByte
UShort
gegevenstypen 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.