Практическое руководство. Вызов функции Windows, принимающей значение беззнакового типа (Visual Basic)
Если вы используете класс, модуль или структуру с элементами без знака целочисленных типов, вы можете получить доступ к этим членам с помощью 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
типы данных не являются частью компонентов, независимых от языка и языка ( CLS), поэтому код, совместимый с CLS, не может использовать компонент, использующий их.Внимание
Вызов неуправляемого кода, например интерфейса программирования приложений Windows (API), предоставляет код потенциальным рискам безопасности.
Внимание
Вызов API Windows требует разрешения неуправляемого кода, что может повлиять на его выполнение в ситуациях с частичным доверием. Дополнительные сведения см. в разделе SecurityPermission " Разрешения доступа к коду".