Página 1 de 1

Una gran duda que me trae de cabeza.

Publicado: 03 Sep 2010, 04:38
por chronos
Hola a todos antes que nada.

Soy un poco Noob en esto del AutoIt, pero empiezo a manejarme. El 1er Script que hago en serio es un Auto Login para un juego que tengo ahora, el Grand Fantasía (La gráfica no me da para más :smt010 ).
De momento solo para mi me lo creo sin problemas, el problema está cuando quiero compartir el Script, ya que nadie del mi clan, con los cuales lo voy a compartir de momento, tienen el AutoIt. Me gustaría saber si puedo configurar el User y el Pass a través de algún archivo .ini o solo de texto, donde ellos escriban sus correspondientes datos y cuando ejecuten el Script sea todo automático.

Y la otra duda es un poco mas complicada. El juego permite muchas resoluciones, yo tengo una y los demás vete tu a saber xD. Tengo que hacer Clic justo en la caja de introducción del nombre de usuario para poder meter los datos, ya que la contraseña con un Send("{TAB}") va sobrado. Y aquí entra el problema de la resolución de pantalla. Cada uno tendrá unas coordenadas diferentes según la resolución y me gustaría saber como puedo activar la introducción de datos sin necesidad del ratón.

Gracias de antemano.


------------------------------------Edito------------------------------------

De momento he llegado a conseguir lo del User y el Pass:

Código: Seleccionar todo

$File1 = FileOpen ("user.txt", 0 )
$User = FileRead ( $File1 )
FileClose ( $File1 )
$File2 = FileOpen ("pass.txt", 0 )
$Pass = FileRead ( $File2 )
FileClose ( $File2 )
Send("#m")
Sleep(1500)

Run ("_Launcher.exe", "C:\AeriaGames\GrandFantasiaES", @SW_MAXIMIZE)
Sleep (8000)
WinActivate ("Progress1")
Sleep(5000)
WinActive ("Progress1")
Send ("{ENTER}")
Sleep (10000)
MouseClick ("Left", 640, 565, 10, 1)
Sleep (1000)
Send($User & "{tab}" & $Pass)
Sleep (1000)
Send ("{ENTER}")
Sleep (3000)
MouseClick ("Left", 714, 636, 10, 1)
Send ("{ENTER}")
En el archivo "user.txt" se pone solamente el nombre de usuario y en "pass.txt" la contraseña.

Ahora me viene otra duda; tengo la guia en Español del programa y me encuentro con "Palabras Claves", me centro mas que nada en estas:

Do...Until
For...Next Ciclo basado en una expresión.
Func...EndFunc Define una función-de-usuario que toma cero o más argumentos y opcionalmente devuelve un resultado.
If...Then Condicionalmente ejecuta una declaración simple
If...ElseIf...Else...EndIf Ejecuta instrucciones condicionalmente.
Select...Case...EndSelect Ejecuta instrucciones condicionalmente.
While...WEnd

Y me gustaria saber con cual de ellas o como puedo hacer lo siguiente:

Crear otro archivo llamado por ejemplo "res.txt" donde solo ponga el ancho de la resolución de la pantalla, y según sea este valor hacer un MouseClick en ciertas partes de la pantalla y poder automatizar aun mas la cosa.

¿Como veis el panorama?

Re: Una gran duda que me trae de cabeza.

Publicado: 05 Sep 2010, 14:39
por torni
Para obtener la resolución de pantalla tienes los macros:
@Desktopwidth y @Desktopheight que devuelven el ancho y alto respectivamente.

Para el tema de los fichero ini tienes las funciones:
iniRead() y iniWrite()

Si los usuarios van a modificar el fichero ini manualmente, con iniRead te sobra:
IniRead ( "nombre de fichero", "sección", "clave", "El valor predefinido de retorno si la clave dada no existe." )

Re: Una gran duda que me trae de cabeza.

Publicado: 07 Sep 2010, 02:18
por Chefito
También puedes intentar acceder directamente a los objetos del programa con las funciones que empiezan por Control...... (Ejemplo ControlSetText para introducir un texto en un control). Gracias a esto, no necesitas tener la ventana activa, ni saber la resolución, ni nada de eso. Tratarás directamente los controles de la ventana. Busca en la ayuda y mira sus ejemplos.
Puedes utilizar el programa AutoIt Window Info para saber la información de las ventanas y sus controles que luego necesitarás utilizar con estas funciones. Viene con el AutoIt. Mira en su lista de programas.
Puede que los objetos no sean nativos de Windows........que sean propios. Entonces este método no sirve. Sería bastante más dificil atacarlos.

Saludos.