Porady: wywoływanie funkcji Windows wykorzystującej typy bez znaku (Visual Basic)
Jeśli używasz klasy, modułu lub struktury zawierającej elementy członkowskie niepodpisanych typów całkowitych, możesz uzyskać dostęp do tych elementów członkowskich za pomocą języka Visual Basic.
Aby wywołać funkcję systemu Windows, która przyjmuje typ niepodpisany
Użyj instrukcji Declare, aby poinformować visual basic, która biblioteka zawiera funkcję, jaka jest jej nazwa w tej bibliotece, jaka jest jej sekwencja wywołania i jak konwertować ciągi podczas wywoływania.
W instrukcji
Declare
użyjUInteger
,ULong
,UShort
lubByte
odpowiednio dla każdego parametru z niepodpisanym typem.Zapoznaj się z dokumentacją wywoływanej funkcji systemu Windows, aby znaleźć nazwy i wartości używanych stałych. Wiele z nich jest zdefiniowanych w pliku WinUser.h.
Zadeklaruj niezbędne stałe w kodzie. Wiele stałych systemu Windows to 32-bitowe wartości bez znaku i należy je zadeklarować
As UInteger
.Wywołaj funkcję w normalny sposób. Poniższy przykład wywołuje funkcję
MessageBox
systemu Windows , która przyjmuje niepodpisany argument liczby całkowitej.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
Funkcję można przetestować
messageThroughWindows
przy użyciu następującego kodu.Public Sub consumeWindowsMessage() Dim w As New windowsMessage w.messageThroughWindows() End Sub
Uwaga
Typy
UInteger
danych ,ULong
,UShort
iSByte
nie są częścią elementów Language Independence and Language-Independent Components (CLS), więc kod zgodny ze specyfikacją CLS nie może używać składnika, który ich używa.Ważne
Wywołanie niezarządzanego kodu, takiego jak interfejs API (API) systemu Windows, uwidacznia kod przed potencjalnym ryzykiem bezpieczeństwa.
Ważne
Wywoływanie interfejsu API systemu Windows wymaga niezarządzanych uprawnień kodu, co może mieć wpływ na jego wykonywanie w sytuacjach częściowego zaufania. Aby uzyskać więcej informacji, zobacz SecurityPermission i Uprawnienia dostępu do kodu.