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

  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 systemu Windows to 32-bitowe wartości bez znaku i należy je zadeklarować 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
    

    Uwaga

    Typy UIntegerdanych , ULong, UShorti SByte 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.

Zobacz też