如何:调用采用无符号类型的 Windows 函数 (Visual Basic)

如果要使用的类、模块或结构具有无符号整数类型的成员,则可以使用 Visual Basic 访问这些成员。

调用采用无符号类型的 Windows 函数

  1. 保存函数的库、函数在库中的名称、函数的调用序列以及调用时字符串的转换方法,都可以使用 Declare 语句 通知 Visual Basic。

  2. 在 Declare 语句中,无符号类型的每个参数都使用相应的 UInteger、ULong、UShort 或 Byte。

  3. 参考要调用的 Windows 函数的文档,找到函数使用的常数的名称和值。 许多这类信息都定义在 WinUser.h 文件中。

  4. 在代码中声明必要的常数。 许多 Windows 常数是 32 位无符号值,应声明为 As UInteger。

  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 的代码不能使用使用了这些数据类型的组件。

    安全说明安全说明

    使调用成为非托管代码,例如 Windows 应用程序编程接口 (API),代码就具有潜在的安全风险。

    安全说明安全说明

    调用 Windows API 需要非托管代码权限,这可能会对它在部分信任情况下的执行产生影响。 有关更多信息,请参见 SecurityPermission代码访问权限

请参见

任务

如何:使用无符号类型优化正整数的存储 (Visual Basic)

演练:调用 Windows API (Visual Basic)

参考

数据类型摘要 (Visual Basic)

Integer 数据类型 (Visual Basic)

UInteger 数据类型

Declare 语句