Página 1 de 1

Script Winrar

Publicado: 28 Oct 2009, 07:59
por avechuche
Bueno tengo un problema, estoy haciendo un scrip para el winrar, para que lo instale y cofigure (valido para x86 y x64). Lo posteo

Código: Seleccionar todo


Opt("WinWaitDelay",100)

Opt("WinTitleMatchMode",4)

Opt("WinDetectHiddenText",1)

Opt("MouseCoordMode",0)

#NoTrayIcon

$tiempo = TimerInit()

Do

If "@OSArch=X64" Then

    Run("X64.exe /S")

    ProcessWaitClose("X64.exe")

    Run(@HomeDrive&"\Archivos de Programa\WinRAR\WinRAR.exe")

    If WinWaitActive("[CLASS:WinRarWindow]","", 2) Then

        Sleep(250)

        Send("{CTRLDOWN}s{CTRLUP}")

            If WinWaitActive("Configuración") Then

                Sleep(250)

                MouseMove(397,42)

                MouseDown("left")

                MouseUp("left")

                MouseMove(99,265)

                MouseDown("left")

                MouseUp("left")

                MouseMove(116,173)

                MouseDown("left")

                MouseUp("left")

                MouseMove(115,196)

                MouseDown("left")

                MouseUp("left")

                MouseMove(265,383)

                MouseDown("left")

                MouseUp("left")

                Sleep(250)

                ProcessClose("WinRAR.exe")

                Exit

            EndIf

    Else

        If WinWaitActive("Configuración") Then

            Sleep(250)

            MouseMove(397,42)

            MouseDown("left")

            MouseUp("left")

            MouseMove(99,265)

            MouseDown("left")

            MouseUp("left")

            MouseMove(116,173)

            MouseDown("left")

            MouseUp("left")

            MouseMove(115,196)

            MouseDown("left")

            MouseUp("left")

            MouseMove(265,383)

            MouseDown("left")

            MouseUp("left")

            Sleep(250)

            ProcessClose("WinRAR.exe")

            Exit

        EndIf

    EndIf

Else

        Run("X86.exe /verysilent")

        ProcessWaitClose("X86.exe")

        Run(@ProgramFilesDir&"\WinRAR\WinRAR.exe")

        If WinWaitActive("[CLASS:WinRarWindow]", "", 2) Then

            Sleep(250)

            Send("{CTRLDOWN}s{CTRLUP}")

            If WinActive("Configuración") Then

                Sleep(250)

                MouseMove(397,42)

                MouseDown("left")

                MouseUp("left")

                MouseMove(99,265)

                MouseDown("left")

                MouseUp("left")

                MouseMove(116,173)

                MouseDown("left")

                MouseUp("left")

                MouseMove(115,196)

                MouseDown("left")

                MouseUp("left")

                MouseMove(265,383)

                MouseDown("left")

                MouseUp("left")

                Sleep(250)

                ProcessClose("WinRAR.exe")

                Exit

            EndIf

        Else

            If WinActive("Configuración") Then

                Sleep(250)

                MouseMove(397,42)

                MouseDown("left")

                MouseUp("left")

                MouseMove(99,265)

                MouseDown("left")

                MouseUp("left")

                MouseMove(116,173)

                MouseDown("left")

                MouseUp("left")

                MouseMove(115,196)

                MouseDown("left")

                MouseUp("left")

                MouseMove(265,383)

                MouseDown("left")

                MouseUp("left")

                Sleep(250)

                ProcessClose("WinRAR.exe")

                Exit

            EndIf

        EndIf

EndIf

Until TimerDiff($tiempo)>=5000

    MsgBox(4096,"Error","Ha habido algún tipo de error en la aplicación al no encontrarse la ventana",5)

    ProcessClose("WinRAR.exe")

Exit

 
En las primeras lineas veran

Código: Seleccionar todo

If "@OSArch=X64" Then
. Supuestamente si el SO que tengo instalado es de 64 bits tiene que hacer eso hasta el

Código: Seleccionar todo

Else
anterior a

Código: Seleccionar todo

Run("X86.exe /verysilent")
, el problema es que no hace eso ... osea como que no detecta si mi SO es 32 o 64 y sigue como si nada. Ejecutando las lineas que le siguen, y no es asi, porque esas lineas se tienen que ejecutar si mi SO es de64 bits. Si no pasar al Else y ejecutar el codigo para el X32. en que le estoy errando?

Re: Script Winrar

Publicado: 28 Oct 2009, 08:03
por gna08
y no pavo... :smt021 :smt021 si es una macro no va entre comilla... resulta igual con funciones.. :smt015
Seria :

If @OSArch="X64" Then

Fijate bien donde puse las comillas
COmenta k onda..

Re: Script Winrar

Publicado: 28 Oct 2009, 08:08
por gna08
Otra cosa.. lo veo medio al vicio usar un timer para esperar la ventana.. mejor usa el WinWait("title", "text", "timeout")
En el time. cuanto keres esperar y si esto es superado devuelve error siendo asi ejecutas lo k deseas o no.. :smt021
jeje :smt023

Re: Script Winrar

Publicado: 28 Oct 2009, 08:43
por avechuche
gna08 escribió:y no pavo... :smt021 :smt021 si es una macro no va entre comilla... resulta igual con funciones.. :smt015
Seria :

If @OSArch="X64" Then

Fijate bien donde puse las comillas
COmenta k onda..
Las comillas en mi caso andan igual porque si yo le agrego el "not". Anda perfecto..

Código: Seleccionar todo


If not "@OSArch=X64" Then

 
ese codigo anda perfecto, osea lo salta y ejecuta lo que tiene que ejecutar. Bueno otra cosa ya que estamos ...

Código: Seleccionar todo


If WinWaitActive("[CLASS:WinRarWindow]","", 2) Then

        Sleep(500)

        Send("{CTRLDOWN}s{CTRLUP}")

            If WinWaitActive("Configuración") Then

                Sleep(500)



                Bla bla bla .....



                ProcessClose("WinRAR.exe")

                Exit

            EndIf

Else

bla bla bla...

 
En el caso que no aparesca la ventana en 2 segundos no tendria que saltar al "Else"??? porque no lo hace :S

Re: Script Winrar

Publicado: 28 Oct 2009, 08:48
por gna08
en primer lugar.. :smt021 ovbio k lo salta. pero si no tenes esa arkitectura jamaz lo podes probar.. asik te va a saltar un lindo error.. aparte sin contar k estas expresando un string.. y eso no tiene sentido..
Segundo.. Winwaitactive.. pork lo pones dentro del IF.. :smt017
Retorna cero si no se actva en 2 segundos y por eso no pasa la prueba y evita lo k esta adrentro.. revisa la ayuda y veras lo k devuelven las funciones.. :smt027 :smt023

Re: Script Winrar

Publicado: 28 Oct 2009, 09:06
por avechuche
Bueno a ver si te gusta ahora ... estoy algo perdido ... lo achique lo que mas pude...

Código: Seleccionar todo


Opt("WinWaitDelay",100)

Opt("WinTitleMatchMode",4)

Opt("WinDetectHiddenText",1)

Opt("MouseCoordMode",0)

#NoTrayIcon

$tiempo = TimerInit()

Do

If @OSArch="X64" Then

    Run("X64.exe /S")

    ProcessWaitClose("X64.exe")

    Run(@HomeDrive&"\Archivos de Programa\WinRAR\WinRAR.exe")

    WinWait("[CLASS:WinRarWindow]","", 2)

    Send("{CTRLDOWN}s{CTRLUP}")

    WinWait("Configuración")

    Sleep(500)

    MouseMove(397,42)

    MouseDown("left")

    MouseUp("left")

    MouseMove(99,265)

    MouseDown("left")

    MouseUp("left")

    MouseMove(116,173)

    MouseDown("left")

    MouseUp("left")

    MouseMove(115,196)

    MouseDown("left")

    MouseUp("left")

    MouseMove(265,383)

    MouseDown("left")

    MouseUp("left")

    Sleep(500)

    ProcessClose("WinRAR.exe")

    Exit

Else

    Run("X86.exe /verysilent")

    ProcessWaitClose("X86.exe")

    Run(@ProgramFilesDir&"\WinRAR\WinRAR.exe")

    WinWait("[CLASS:WinRarWindow]", "", 2)

    Sleep(500)

    Send("{CTRLDOWN}s{CTRLUP}")

    WinActive("Configuración")

    Sleep(500)

    MouseMove(397,42)

    MouseDown("left")

    MouseUp("left")

    MouseMove(99,265)

    MouseDown("left")

    MouseUp("left")

    MouseMove(116,173)

    MouseDown("left")

    MouseUp("left")

    MouseMove(115,196)

    MouseDown("left")

    MouseUp("left")

    MouseMove(265,383)

    MouseDown("left")

    MouseUp("left")

    Sleep(500)

    ProcessClose("WinRAR.exe")

    Exit

EndIf

Until TimerDiff($tiempo)>=5000

    MsgBox(4096,"Error","Ha habido algún tipo de error en la aplicación al no encontrarse la ventana",5)

    ProcessClose("WinRAR.exe")

Exit

 
PD: pero no me cages a pedo!!!!! :smt019 :smt019 :smt019 :smt019 :smt019 :smt019 :smt021 :smt018 :smt017 :smt013 :smt014 :smt015 :smt014 :smt003 :smt003 :smt003 :smt003 :smt003

Re: Script Winrar

Publicado: 28 Oct 2009, 09:11
por gna08
bueno bueno jaja. va con onda.. pero si no .. .. :smt017 :smt023 . :smt007
haber.. un detallito.. podrias usar directamente RunWAit para ahorrarte de usar Processwaitclos..

Ok.. y con el tema de k pasa ahora?? k no te anda?
Rapido k me duermo :smt015

Re: Script Winrar

Publicado: 28 Oct 2009, 09:16
por avechuche
Mirandolo bien hay errores pero no se como arreglarlos. Te explico una parte porque para las 2 arquitecturas es lo mismo.

Código: Seleccionar todo


 Run("X86.exe /verysilent")

    ProcessWaitClose("X86.exe")

    Run(@ProgramFilesDir&"\WinRAR\WinRAR.exe")

    WinWait("[CLASS:WinRarWindow]", "", 2)

    Sleep(500)

    Send("{CTRLDOWN}s{CTRLUP}")

 

Bueno primera linea instala el programa
segunda linea espera que se cierre el instalador (ahora puebo lo de runwait)
tercera linea ejecuta el programa recien instalado
cuarta linea espera 2 segundos hasta que aparesca la ventana "[CLASS:WinRarWindow]".
quinta linea, espera medio segundo
sexta linea apreta "control + s" para entrar en la configuracion de Winrar.

Ahora el problema. Cuando yo abro el winrar Run(@ProgramFilesDir&"\WinRAR\WinRAR.exe") y me aparece otra ventana, en este caso con el title configuracion, no quiero que me aprete "control + s" porque ya estoy en configuracion... como lo puedo solucionar...

Re: Script Winrar

Publicado: 28 Oct 2009, 09:23
por gna08
no.. osea. vos decis k si siempre aparece entonces para k mandas cOntrol S
a menos k sea k no siempre sale cierto?
si es asi seria

Código: Seleccionar todo

If Not Winwait("laventana", "", 2) the .... 

 ;aca pones lo k haria si pasaron dos segundo y la ventana de configuracion no salio

Else

 ;lo k pongo si aparece la ventana

Endif

 
es eso ??
vaa. es lo k entendi.. :smt017
Si no te respondo en 1 toke es pork me fui a dormi :smt023
(trata de responder rapido, no doy mas :smt009 )

Re: Script Winrar

Publicado: 28 Oct 2009, 09:24
por Ximorro
A ver, la explicación del if con cadena es la siguiente:
Efectivamente estaba mal, no hacías ninguna comparación, el hecho de que no te diera error directamente es que para AutoIt cualquier cosa diferente de CERO es cierta, y CERO es falsa. Así que
If "Cadena" Then
;ejecuto el if
else
;ejecuto el else
endif

Ejecutará la parte if, da igual que el texto sea "Cadena" o "@OSArch=X64" o "Int(23.4)". Como dice gna08 lo que hay dentro de las comillas no se ejecuta, ni las comparaciones ni las funciones, todo eso se evalúa siempre como TRUE.

Por eso el Not te funcionaba, porque debido a lo anterior [if NOT "cadena"] es equivalente a [if NOT TRUE], o sea [IF FALSE] con lo que ejecutaba la parte ELSE que te interesaba, pero era de casualidad, no tenía nada que ver con el valor de @OSArch.

Una nota, como dije al principio los CEROS equivalen a false, lo puse así porque el número 0 es un CERO, pero por ejemplo la cadena vacía "" también se considera CERO para el IF (o sea, hace de FALSE).
De esa manera las condiciones [if false Then], [if 0 Then], [if "" Then], [if 2-2 Then]... son equivalentes, y ejecutarían la parte ELSE.

Por lo demás, gna08, avechuche tiene razón, te has pasado un poco. Puedes ponerte serio si ves que le dices algo a alguien y por más que lo digas repite el mismo fallo, ¡pero al menos permite a los inexpertos cometer un fallo un par de veces!

Taluec...

Re: Script Winrar

Publicado: 28 Oct 2009, 09:29
por avechuche
gna08 escribió:no.. osea. vos decis k si siempre aparece entonces para k mandas cOntrol S
a menos k sea k no siempre sale cierto?
si es asi seria

Código: Seleccionar todo

If Not Winwait("laventana", "", 2) the .... 

 ;aca pones lo k haria si pasaron dos segundo y la ventana de configuracion no salio

Else

 ;lo k pongo si aparece la ventana

Endif

 
es eso ??
vaa. es lo k entendi.. :smt017
Si no te respondo en 1 toke es pork me fui a dormi :smt023
(trata de responder rapido, no doy mas :smt009 )

anda a dormir tranquilo, yo pruebo y posteo cuando lo veas contesta .. saludos y muchas gracias!

Re: Script Winrar

Publicado: 28 Oct 2009, 09:29
por gna08
Ximorro escribió:A ver, la explicación del if con cadena es la siguiente:
Efectivamente estaba mal, no hacías ninguna comparación, el hecho de que no te diera error directamente es que para AutoIt cualquier cosa diferente de CERO es cierta, y CERO es falsa. Así que
If "Cadena" Then
;ejecuto el if
else
;ejecuto el else
endif

Ejecutará la parte if, da igual que el texto sea "Cadena" o "@OSArch=X64" o "Int(23.4)". Como dice gna08 lo que hay dentro de las comillas no se ejecuta, ni las comparaciones ni las funciones, todo eso se evalúa siempre como TRUE.

Por eso el Not te funcionaba, porque debido a lo anterior [if NOT "cadena"] es equivalente a [if NOT TRUE], o sea [IF FALSE] con lo que ejecutaba la parte ELSE que te interesaba, pero era de casualidad, no tenía nada que ver con el valor de @OSArch.

Una nota, como dije al principio los CEROS equivalen a false, lo puse así porque el número 0 es un CERO, pero por ejemplo la cadena vacía "" también se considera CERO para el IF (o sea, hace de FALSE).
De esa manera las condiciones [if false Then], [if 0 Then], [if "" Then], [if 2-2 Then]... son equivalentes, y ejecutarían la parte ELSE.

Por lo demás, gna08, avechuche tiene razón, te has pasado un poco. Puedes ponerte serio si ves que le dices algo a alguien y por más que lo digas repite el mismo fallo, ¡pero al menos permite a los inexpertos cometer un fallo un par de veces!

Taluec...
Chanflee :smt026 solo lo charlo a avechuche. ya k siempre lo charlo desde el msn. y si bien es cierto.. guardar compostura.. antes k me reten :smt021 pido disculpas de antemanso pero solo era broma siii??????
Okkk!

Re: Script Winrar

Publicado: 28 Oct 2009, 09:37
por avechuche
conectate :D

Re: Script Winrar

Publicado: 28 Oct 2009, 10:10
por Ximorro
Bueno, de todas maneras lo mío también era una regañina suave, es que me parecía que le habías dado demasiada caña. Pero bueno, si sois muy colegas se entiende las confianzas.

Ciao