Поделиться через


Практическое руководство. Вызов функции Windows, принимающей значение беззнакового типа (Visual Basic)

При использовании класса, модуля или структуры, имеющих члены беззнаковых целых типов, можно получить доступ к этим членам с помощью Visual Basic.

Для вызова функции Windows, которая принимает беззнаковый тип

  1. Используйте Оператор Declare, чтобы сообщить Visual Basic, какая из библиотек содержит функцию с данным именем, какова последовательность вызова, и как преобразовать строки при её вызове.

  2. В инструкции Declare используйте UInteger, ULong, UShort или Byte соответственно для каждого параметра с беззнаковым типом.

  3. Обратитесь к документации вызываемой функции Windows для поиска имен и значений констант, которые она использует.Многие из них определены в файле WinUser.h.

  4. Объявите необходимые константы в коде программы.Многие константы Windows - 32-разрядные беззнаковые значения, их следует объявлять как AsUInteger.

  5. Вызовите функцию обычным образом.В следующем примере вызывается Windows функция MessageBox, которая принимает беззнаковое целое число в качестве аргумента.

    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
    

    Можно проверить функцию messageThroughWindows с помощью следующего кода.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    
    Предупреждающее замечаниеВнимание

    Типы данных UInteger, ULong, UShort и SByte не являются частью Спецификация CLS (CLS), поэтому CLS-совместимый код не может использовать компонент, который использует их.

    Примечание о безопасностиПримечание по безопасности

    Создание вызова неуправляемого кода, такого как программного интерфейса приложения (API), подвергает ваш код потенциальной опасности.

    Примечание о безопасностиПримечание по безопасности

    Вызов Windows API требует разрешения неуправляемого кода, которое может повлиять на его выполнение в случаях частичного доверия.Дополнительные сведения см. в разделах SecurityPermission и Разрешения для доступа к коду.

См. также

Задачи

Пошаговое руководство. Вызов API Windows (Visual Basic)

Ссылки

Сводка типов данных (Visual Basic)

Тип данных Integer (Visual Basic)

Тип данных UInteger

Оператор Declare