Procedimiento Llamar a una función de Windows que adopta tipos sin signo (Visual Basic)How to: Call a Windows Function that Takes Unsigned Types (Visual Basic)

Si está utilizando una clase, módulo o estructura que tiene miembros de tipos enteros sin signo, puede tener acceso a estos miembros con Visual Basic.If you are consuming a class, module, or structure that has members of unsigned integer types, you can access these members with Visual Basic.

Para llamar a una función de Windows que toma un tipo sin signoTo call a Windows function that takes an unsigned type

  1. Use un Declare Statement para indicar a Visual Basic de biblioteca que contiene la función, lo que es su nombre en esa biblioteca, ¿cuál es su secuencia de llamada y cómo convertir cadenas al llamarla.Use a Declare Statement to tell Visual Basic which library holds the function, what its name is in that library, what its calling sequence is, and how to convert strings when calling it.

  2. En el Declare declaración, use UInteger, ULong, UShort, o Byte según corresponda para cada parámetro con un tipo sin signo.In the Declare statement, use UInteger, ULong, UShort, or Byte as appropriate for each parameter with an unsigned type.

  3. Consulte la documentación de la función de Windows que esté llamando para buscar los nombres y valores de las constantes que utiliza.Consult the documentation for the Windows function you are calling to find the names and values of the constants it uses. Muchas de ellas se definen en el archivo WinUser.h.Many of these are defined in the WinUser.h file.

  4. Declare las constantes necesarias en el código.Declare the necessary constants in your code. Muchas de las constantes de Windows son valores sin signo de 32 bits, y se deben declarar estos As UInteger.Many Windows constants are 32-bit unsigned values, and you should declare these As UInteger.

  5. Llame a la función de la manera normal.Call the function in the normal way. El ejemplo siguiente se llama a la función de Windows MessageBox, que toma un argumento de entero sin signo.The following example calls the Windows function MessageBox, which takes an unsigned integer argument.

    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
    

    Puede probar la función messageThroughWindows con el código siguiente.You can test the function messageThroughWindows with the following code.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    

    Precaución

    El UInteger, ULong, UShort, y SByte tipos de datos no son parte de la independencia del lenguaje y componentes independientes del lenguaje (CLS), por lo que el código conforme a CLS no puede utilizar un componente que los utiliza.The UInteger, ULong, UShort, and SByte data types are not part of the Language Independence and Language-Independent Components (CLS), so CLS-compliant code cannot consume a component that uses them.

    Importante

    Realizar una llamada a código no administrado, como la interfaz de programación de aplicaciones (API), Windows expone su código a posibles riesgos de seguridad.Making a call to unmanaged code, such as the Windows application programming interface (API), exposes your code to potential security risks.

    Importante

    Llamar a la API de Windows requiere el permiso de código no administrado, lo que podría afectar a su ejecución en situaciones de confianza parcial.Calling the Windows API requires unmanaged code permission, which might affect its execution in partial-trust situations. Para obtener más información, consulte SecurityPermission y permisos de acceso del código.For more information, see SecurityPermission and Code Access Permissions.

Vea tambiénSee also