如何:调用采用无符号类型的 Windows 函数 (Visual Basic)
如果要使用的类、模块或结构具有无符号整数类型的成员,则可以使用 Visual Basic 访问这些成员。
调用采用无符号类型的 Windows 函数
保存函数的库、函数在库中的名称、函数的调用序列以及调用时字符串的转换方法,都可以使用 Declare 语句 通知 Visual Basic。
在 Declare 语句中,无符号类型的每个参数都使用相应的 UInteger、ULong、UShort 或 Byte。
参考要调用的 Windows 函数的文档,找到函数使用的常数的名称和值。 许多这类信息都定义在 WinUser.h 文件中。
在代码中声明必要的常数。 许多 Windows 常数是 32 位无符号值,应声明为 As UInteger。
以常规方法调用函数。 下面的示例调用 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 的代码不能使用使用了这些数据类型的组件。
安全说明 使调用成为非托管代码,例如 Windows 应用程序编程接口 (API),代码就具有潜在的安全风险。
安全说明 调用 Windows API 需要非托管代码权限,这可能会对它在部分信任情况下的执行产生影响。 有关更多信息,请参见 SecurityPermission 和代码访问权限。
请参见
任务
如何:使用无符号类型优化正整数的存储 (Visual Basic)
演练:调用 Windows API (Visual Basic)