Usando dlls de Windows desde Velneo V7

Hace algún tiempo que quería escribir sobre cómo usar las dlls nativas de Windows (user32, kernel, etc) desde Velneo V7 usando el objeto librería externa.

No voy a pararme en como crear el objeto, las funciones y sus parámetros, ya que eso está perfectamente explicado en la zona info de www.velneo.es. En este artículo mostraré un par de ejemplos de uso de la dll user32 y doy acceso a la Velneo Open App que he creado para este artículo.

Lo primero que hay que tener en cuenta en la declaración del objeto y de las funciones es el uso de la convención “C_X86_WIN32_STD”. Tanto en la declaración del objeto librería externa como en las funciones que declaremos como subobjetos dentro de éste.

Por ejemplo, para la función “ShowWindow”, la declaración quedaría de la siguiente manera:

Declaración de la función ShowWindow

Debido a la forma en que Velneo V7 hace las llamadas a librerías multiplataforma, es muy importante que el tamaño de los parámetros coincida exactamente. Por ejemplo, si consultamos la documentación para esta en función en el msdn de Microsoft vemos que la declaración de la misma es:

BOOL ShowWindow(      
    HWND hWnd,
    int nCmdShow
);

El tipo predefinido HWND es un entero de 4 bytes. En Velneo debemos buscar la declaración estándar (C/C++) más adecuada para ese tipo, usando uno que ocupe lo mismo en memoria y que se corresponda con el tipo original, en nuestro caso “unsigned int”.

Si te estás preguntando porqué no se incluyó el tipo HWND dentro de los posibles pues la explicación es sencilla. Velneo V7, al ser multiplataforma, ha de usar unos tipos de dato estándares que se puedan aplicar a todas las plataformas.

Otra cosa a tener en cuenta es el nombre real que la función tiene en la dll. Por ejemplo, en el caso de la función MessageBox, incluida también en el ejemplo, en la dll user32, se llama realmente MessageBoxA. Una utilidad que nos puede ayudar a ver las funciones exportadas por una dll es Dll Export Viewer.

Para mostrar el funcionamiento de este objeto he realizado una pequeña Velneo Open App que puedes ejecutar y/o importar a tu Velneo vServer.  Para ejecutar esta Velneo Open App, conecta con Velneo vClient V7 con los siguientes datos:

servidor: vatp://v7cloud3.velneo.com:6322
usuario: public
password: public

La instancia se llama “Tutor dll Windows”. Es una aplicación muy sencilla que hace una serie de llamadas a user32.dll

Si lo que quieres es importarla a tu Velneo vServer sigue las instrucciones que aparecen en la zona info (busca el apartado Importar componentes) y utiliza los mismos datos que en el caso anterior para conectarte.

Si tienes alguna dll o alguna astucia interesante te animo a compartirla.

Anuncios

4 responses to this post.

  1. […] nativas de Windows desde Velneo V7 usando el objeto librería externa, he escrito un artículo en Exprimiendo Velneo donde aparecen una serie de consideraciones a tener en cuenta a la hora de usar este objeto. […]

    Responder

  2. Posted by miguel benjumea on 18 octubre 2010 at 8:55 pm

    al intertar conectarme me dice que no hay licencias disponibles
    ¿como puedo decargar este tutor?
    ¿hay alguna info adicional para los que estamos un poco pez en dll?
    un saludo
    Miguel

    Responder

  3. Posted by José González Vera on 18 octubre 2010 at 9:17 pm

    Lo siento, el tutor esta temporalmente no disponible. Intentaré tenerlo online lo más pronto posible. Puedes encontrar más información en la zona info de velneo.es

    Responder

  4. hola, sabes si se puede hacer esto mismo pero con .OCX ?

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: