Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы используете класс, модуль или структуру с элементами без знака целочисленных типов, вы можете получить доступ к этим членам с помощью Visual Basic.
Вызов функции Windows, которая принимает неподписанный тип
Используйте инструкцию Declare, чтобы сообщить Visual Basic, какая библиотека содержит функцию, ее имя в этой библиотеке, порядок вызова и способ преобразования строк при вызове.
В инструкции
Declare
используйтеUInteger
,ULong
,UShort
илиByte
в зависимости от каждого параметра с неподписанным типом.Ознакомьтесь с документацией по вызываемой функции Windows, чтобы найти имена и значения используемые константы. Многие из них определены в файле WinUser.h.
Объявите необходимые константы в коде. Многие константы Windows — это 32-разрядные значения без знака, и их следует объявить
As UInteger
.Вызовите функцию как обычно. В следующем примере вызывается функция
MessageBox
Windows, которая принимает несписанный целочисленный аргумент.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
не являются частью Language Independence and Language-Independent Components (CLS), поэтому код, совместимый с CLS, не может использовать компонент, использующий их.Это важно
Вызов неуправляемого кода, например интерфейса программирования приложений Windows (API), подвергает ваш код потенциальным угрозам безопасности.
Это важно
Вызов API Windows требует прав доступа к неуправляемому коду, что может повлиять на его выполнение в условиях частичного доверия. Дополнительные сведения см. в разделе SecurityPermission " Разрешения доступа к коду".