Cómo: Llamar a una función de Windows que adopta tipos sin signo (Visual Basic)

Si usa una clase, un módulo o una estructura que tiene miembros de tipos enteros sin signo, puede acceder a estos miembros con Visual Basic.

Para llamar a una función de Windows que adopta tipos sin signo

  1. Use una instrucción Declare para indicar a Visual Basic qué biblioteca contiene la función, cuál es su nombre en esa biblioteca, cuál es su secuencia de llamadas y cómo convertir cadenas al llamarla.

  2. En la instrucción Declare, use UInteger, ULong, UShort o Byte según corresponda para cada parámetro con un tipo sin signo.

  3. Consulte la documentación de la función de Windows a la que llama para buscar los nombres y los valores de las constantes que usa. Muchos de estos se definen en el archivo WinUser.h.

  4. Declare las constantes necesarias en el código. Muchas constantes de Windows son valores sin signo de 32 bits y debe declararlas As UInteger.

  5. Llame a la función de la manera normal. En el ejemplo siguiente se llama a la función de Windows MessageBox, que toma un argumento entero sin signo.

    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 siguiente código.

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

    Precaución

    Los tipos de datos UInteger, ULong, UShort y SByte no forman parte de la Independencia del lenguaje y componentes independientes del lenguaje (CLS), por lo que el código conforme a CLS no puede consumir un componente que los use.

    Importante

    La realización de una llamada al código no administrado, como la interfaz de programación de aplicaciones (API) de Windows, expone el código a posibles riesgos de seguridad.

    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. Para obtener más información, vea SecurityPermission y Permisos de acceso del código.

Consulte también