Mostrando entradas con la etiqueta Variables. Mostrar todas las entradas
Mostrando entradas con la etiqueta Variables. Mostrar todas las entradas

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!