Página 1 de 1

Algun tutorial sobre API?

Publicado: 11 Abr 2012, 23:37
por Dany
hola, soy nevo.
disculpen si mi pregunta es mas una búsqueda :smt009

quisiera saber si no hay un manual básico para aprender a usar las APIs de windows con autoit, y el uso de dlls. he usado el buscador pero no sale nada. :smt011

saludos

Re: Algun tutorial sobre API?

Publicado: 12 Abr 2012, 08:09
por Ximorro
Si tu problema es usarlo desde AutoIt, es decir, el uso de DllOpen, DllCall y compañía, siempre puedes usar la udf WinAPI.au3, que mapea un montón de llamadas de la API, así que las manejas como si fueran funciones normales de AutoIt.

Si de todas maneras tienes dudas concretas sobre como usar DllCall y esas cosas pues pregunta a ver en qué podemos ayudar.

Si tu problema es entender esa API ahí te puedo ayudar menos, eso ya no tiene que ver con AutoIt sino con las propias librerías de Windows, que puedes usar desde autoit o desde cualquier otro lenguaje. Quizás algún compañero nos pueda poner un buen enlace pero me temo que en esto no te puedo ayudar mucho...

Re: Algun tutorial sobre API?

Publicado: 12 Abr 2012, 13:42
por Dany
muchas gracias Ximorro voy a leer sobre lo que me dices :smt045 cualquier cosa pergunto.

PD: creo que en el foro vi algo sobre un tutorial basico de usar APIs de la kernel o user32, pero no recuerdo donde :smt017

Re: Algun tutorial sobre API?

Publicado: 12 Abr 2012, 14:07
por Ximorro
No me suena lo del tutorial, sorry.

Pero como te digo con esa udf el problema no es cómo acceder a la API desde AutoIT, sino conocer la API.

Por ejemplo para usar la función que te dice la clase de una ventana, buscando por la MSDN o en algún otro sitio puedes ver que es GetClassNameW y está en user32.dll.

Entonces por ejemplo para ver qué clase tiene la ventana de un GUI de AutoIT, suponiendo que lo tienes referenciado en la variable $miGui, tienes dos opciones, hacerlo "a pelo":

Código: Seleccionar todo

$hWnd = GUICtrlGetHandle($miGui)
$aResult = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $hWnd, "wstr", "", "int", 4096)
If @error Then
  ... ;aquí se trata el error
Else
  $clase = $aResult[2]
EndIf
O hacerlo usando la función de ayuda en WinAPI.au3

Código: Seleccionar todo

$clase = _WinAPI_GetClassName($miGui)
If @error Then
  ... ;aquí se trata el error
EndIf
¡Bastante más fácil

En ambos casos obtendrás en $clase la cadena "AutoIt v3 GUI".
Así que usar la API es fácil usando la udf de ayuda. Hacerlo directamente haciendo las llamadas a las funciones de las dll con DllCall es más complicado, pero también se puede.
Conocer la API es otro problema, que como digo no tiene que ver directamente con AutoIT, sino que se trata de conocer las interioridades de Windows.
Una vez sabes qué funciones necesitas y cómo se usan puedes buscar y si están en Winapi.au3 será trivial utilizarlas, si no tendrás que hacerte la llamada a DllCall.

Re: Algun tutorial sobre API?

Publicado: 12 Abr 2012, 15:03
por Dany
ok si ya me descargue el WinAPIEx UDF y la verdad es muy útil y facil.

Gracias por el ejemplo. :smt041


También me estudiare las APIs de Windows porque realmente no se utilizarlas.


Gracias Master :smt041

Re: Algun tutorial sobre API?

Publicado: 13 Abr 2012, 08:01
por Ximorro
Efectivamente, esa es una extensión extraoficial de la que te dije, con más funciones.
En realidad se complementan, WinAPI.au3 es la que viene con AutoIT, y no está contenida en la extensión, así que cuando busques funciones mira en las dos.

Suerte con la API, es gigantesca así que asusta pero se pueden hacer cosas estupendas.

Re: Algun tutorial sobre API?

Publicado: 13 Abr 2012, 12:26
por Ximorro
He encontrado un tutorial de WinAPI. Está sobre C pero tal como dice el autor el tutorial no es de C (y de hecho C se da por sabido) sino que es útil para cualquier lenguaje que pueda acceder a la API de Windows, como AutoIT (lo de AutoIT lo digo yo, claro, él pone como ejemplo Java, Assembler o Visual Basic).

El original está aquí:
http://winprog.org/tutorial/start.html

Aquí hay una traducción al español, no sé cómo estará de actualizada, ahí pone 2003 que parece antiguo, los ejemplos de la versión en inglés están en Visual C++ 2008, así que puede estar más actualizada. Pero bueno, si no os va el inglis pitinglis:
http://winprog.org/tutorial/es/index.html

Ampliación:
Otro más aquí en castellano, parece bastante completo:
http://winapi.conclase.net/curso/index.php

Y la madre de todo, lógicamente la MSDN de Msoft, en inglés:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

De todas maneras creo que primero hay que tener claro qué se quiere hacer. Muchas cosas que programando "a pelo" en Windows hay que hacerlas con llamadas a WinAPI se pueden hacer directamente en AutoIT. AutoIT se encarga de hacer las llamadas internamente. Cuando haya cosas más avanzadas que se escapen a las herramientas básicas de AutoIT es cuando nos tocará usar cosas más complejas como gestión de mensajes a bajo nivel (con GuiRegisterMsg, por ejemplo), o con llamadas directas a la API de Windows (directamente con DllCall o con la ayuda de udfs como las que comentamos arriba).

Re: Algun tutorial sobre API?

Publicado: 13 Abr 2012, 18:15
por Dany
Muchas gracias amigo de verdad esto me ayudara mucho. manejo un poco esos otros lenguajes pero el Autoit me ha enamorado :smt007 , gracias Master :smt023 le voy a poner mucho empeño. saludos :smt045