Практическое руководство. Вызов функции Windows, принимающей значение беззнакового типа (Visual Basic)
При использовании класса, модуля или структуры, имеющих члены беззнаковых целых типов, можно получить доступ к этим членам с помощью Visual Basic.
Для вызова функции Windows, которая принимает беззнаковый тип
Используйте Оператор Declare, чтобы сообщить Visual Basic, какая из библиотек содержит функцию с данным именем, какова последовательность вызова, и как преобразовать строки при её вызове.
В инструкции Declare используйте UInteger, ULong, UShort или Byte соответственно для каждого параметра с беззнаковым типом.
Обратитесь к документации вызываемой функции Windows для поиска имен и значений констант, которые она использует.Многие из них определены в файле WinUser.h.
Объявите необходимые константы в коде программы.Многие константы Windows - 32-разрядные беззнаковые значения, их следует объявлять как AsUInteger.
Вызовите функцию обычным образом.В следующем примере вызывается 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)