Udostępnij za pośrednictwem


Porady: wywoływanie funkcji systemu Windows, która przyjmuje niepodpisane typy (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

  1. 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.

  2. W instrukcji Declare użyj UInteger, ULong, UShortlub Byte odpowiednio dla każdego parametru z niepodpisanym typem.

  3. 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.

  4. 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.

  5. Wywołaj funkcję w normalny sposób. Poniższy przykład wywołuje funkcję MessageBoxsystemu 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 i SByte 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.

Zobacz także