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
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.
I -instruktionen
Declare
använder duUInteger
,ULong
,UShort
ellerByte
efter behov för varje parameter med en osignerad typ.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.
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
.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.
SByte
UShort
ULong
UInteger
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.