Share via


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

Si está utilizando una clase, módulo o estructura que tiene miembros de tipos de enteros sin signo, puede tener acceso a estos miembros con Visual Basic.

Para llamar a una función Windows que adopta un tipo sin signo

  1. Utilice Declare (Instrucción) para indicar a Visual Basic qué biblioteca contiene la función, qué nombre tiene en esa biblioteca, cuál es su secuencia de llamada y cómo convertir las cadenas al llamarla.

  2. En la instrucción Declare, utilice UInteger, ULong, UShort o Byte como corresponda a cada parámetro con un tipo sin signo.

  3. Consulte la documentación de la función de Windows a la que está llamando para buscar los nombres y valores de las constantes que utiliza. Muchos de éstas están definidas en el archivo WinUser.h.

  4. Declare las constantes necesarias en su 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 adopta un argumento de 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 código siguiente.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    
    Nota de precauciónPrecaución

    Los tipos de datos UInteger, ULong, UShort y SByte no forman parte de Common Language Specification (CLS), por lo que el código conforme a CLS no puede utilizar un componente que los utiliza.

    Nota de seguridadNota sobre la seguridad

    Si realiza una llamada a un código no administrado, como la interfaz de programación de aplicaciones (API) de Windows, expone su código a un posible riesgo de seguridad.

    Nota de seguridadNota sobre la seguridad

    Para llamar a la API de Windows, se requiere un permiso de código no administrado que puede afectar a su ejecución en situaciones de confianza parcial. Para obtener más información, vea SecurityPermission y Permisos de acceso a código.

Vea también

Tareas

Cómo: Optimizar el almacenamiento de enteros positivos con tipos sin signo (Visual Basic)

Tutorial: Llamar a las API de Windows (Visual Basic)

Referencia

Resumen de tipos de datos (Visual Basic)

Integer (Tipo de datos, Visual Basic)

UInteger (Tipo de datos)

Declare (Instrucción)