Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 w systemie Windows to 32-bitowe wartości bez znaku, które powinieneś zadeklarować jako
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
Ostrzeżenie
Typy danych
UInteger
,ULong
,UShort
iSByte
nie są częścią Niezależności Języka i Language-Independent Components (CLS), więc kod zgodny ze specyfikacją CLS nie może korzystać ze składnika, który ich używa.Ważne
Wywołanie niezarządzanego kodu, takiego jak interfejs API systemu Windows, naraża twój kod na potencjalne ryzyko bezpieczeństwa.
Ważne
Wywoływanie interfejsu API systemu Windows wymaga uprawnienia do kodu niezarządzanego, które mogą wpłynąć na jego działanie w środowisku o częściowym zaufaniu. Aby uzyskać więcej informacji, zobacz SecurityPermission i Uprawnienia dostępu do kodu.