viernes, 24 de octubre de 2014

Llamar librerias Pauscal desde Autoit

Bienvenidos, hoy le mostrare como crear librerías DLL en Pauscal y llamarlas desde el lenguaje de programación AutoitScript.

Bien, Antes de comenzar les informo que tienen que saber lo básico de llamadas a dll en ambos lenguajes, "Proc" en Pauscal y "DllCall" en Autoit.

Comenzamos abriendo el IDE de Pauscal y creando una nueva biblioteca.


Como ejemplo, exportaremos un simple procedimiento que muestre un mensaje en pantalla, Ingresamos el siguiente código.

Importar "Utiles.prp" ' Importamos la librería que contiene el procedimiento "Mensaje"

Proc Msg(Contenido:Entero) Exportar ' Creamos un procedimiento, lo nombramos "Msg" y establecemos su primer parámetro como un Entero, finalmente Exportamos el procedimiento.
Mensaje(CadenaDePtrCad(Contenido)) ' Utilizamos el procedimiento "CadenaDePtrCad" para obtener la cadena desde el puntero que ingresa gracias a "DllCall" de Autoit.
FinProc ' Fin procedimiento


Una vez escrito el código, lo compilamos cliqueando en el botón que esta a la izquierda del botón verde mas llamativo.

Yo lo pondré en el escritorio y lo llamare "Dll".


Ahora creamos un Script de Autoit.


Lo abrimos con nuestro editor de texto de preferencia y le pegamos el siguiente código.

Dim $Var1
$Mensaje = "Mensaje"
$Var1 = DllCall("Dll.dll","none","Msg","str",$Mensaje)

Seguramente los que ya hayan probado la función "DllCall" en Autoit se preguntaran:

"¿Por Que le establecemos el parámetro 1 de tipo "Str" si es para Cadenas?"
"Ademas en Pauscal le establecimos el parámetro 1 de tipo Entero que es numérico"

Lo que hace el tipo de dato "Str" en Autoit es enviar un puntero a la cadena, se puede apreciar esta realidad en la documentación del lenguaje.


Si no mal recuerdo, LPCSTR significa "Puntero constante a Cadena" y LPSTR es "Puntero a Cadena", Por lo que nos indica que claramente envía un Puntero a la cadena que esta contenida en memoria y que sera obtenida por la librería gracias al procedimiento "CadenaDePtrCad" (Cadena de puntero a cadena).

Ejecutan el código y pueden visualizar claramente el mensaje.


¡Saludos!