ayuda con script Topic is solved

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

kevin
Posts: 6
Joined: 10 Jul 2017, 07:48
Contact:

ayuda con script

10 Jul 2017, 08:03

hola necesito ayuda con un script. Quiero hacer que el script realice un función (Do:) permanente, pero cuando se abra un ahk_class ... (que seria una ventana de error) la función (Do:) se cancele y reproduzca (Da:) pero al terminar este vuelva a como estaba antes ( con (Do:) )

Esto es lo que tengo mas o menos :

#NoEnv
#Warn
#SingleInstance force

i := 0
#Persistent
SetTimer, Do, 1200000


Do:
...
Da:
...
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: ayuda con script

10 Jul 2017, 18:44

Utiliza otra etiqueta con SetTimer que compruebe la existencia de "ahk_class" con WinExist, si existe para este temporizador, para el temporizador de la etiqueta "Do" y utiliza Gosub para ejecutar la etiqueta "Da", una vez termine vuelve a activar ambos temporizadores.
kevin
Posts: 6
Joined: 10 Jul 2017, 07:48
Contact:

Re: ayuda con script

11 Jul 2017, 08:02

como seria eso?
creo que mande cualquiera

#NoEnv
#Warn
#SingleInstance force

i := 0
#Persistent
SetTimer, Do, 1200000

SetTimer, Loop
Gosub, Da

WinTitle := "ahk_class 3948"

Loop
{
If (WinExist(WinTitle))
{
While (WinExist(WinTitle))
Sleep 1000
Da:
}
}

Do:
;...
return

Da:
Sleep, 100
;...
return
A_AhkUser
Posts: 1147
Joined: 06 Mar 2017, 16:18
Location: France
Contact:

Re: ayuda con script

11 Jul 2017, 08:42

Hola Kevin,

Una possibilidad:

Code: Select all

#NoEnv
#Warn
#SingleInstance force
#Persistent

Gosub, start
return ; fin de la parte auto-ejecutada del script

observador:
WinWait, ahk_class Notepad
SetTimer, Do, off
while (doEjecutando) ; espera que la subrutina Do se ha finalizado
	sleep, 100
Da:
MsgBox % A_ThisLabel
WinWaitClose, ahk_class Notepad
Gosub, restart ; gosub start/restart
; return
Do:
doEjecutando := true
ToolTip % i++
doEjecutando := false
return


start:
restart:
doEjecutando := false
i := 0
SetTimer, observador, -1 ; si el valor del periodo es negativo, el timer se ejecuta solo una vez
; SetTimer, Do, 1200000 ; veinte minutos
SetTimer, Do, 1000
return

Suerte!
my scripts
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: ayuda con script  Topic is solved

11 Jul 2017, 10:36

kevin wrote:creo que mande cualquiera
:facepalm:
kevin wrote:como seria eso?
(sin probar)

Code: Select all

#SingleInstance Force
#Persistent

SetTimer, Do, 1200000
SetTimer, Ch, 500
Return

Do: 
Return

Ch:
SetTimer, Ch, Off
If (WinExist("ahk_class 3948"))
{
	SetTimer, Do, Off
	Gosub, Da
	SetTimer, Do, On
}
SetTimer, Ch, On
Return

Da:
kevin
Posts: 6
Joined: 10 Jul 2017, 07:48
Contact:

Re: ayuda con script

12 Jul 2017, 08:24

Gracias. Solo ahí un problema que solo se ejecuta 1 vez, (Después de ejecutarse Do:,->Da:,y volver a Do:, al volver abrir el ahk_class no se ejecuta Da:)
Así quedo el script

#SingleInstance Force
#Persistent

SetTimer, Do, 1200000
SetTimer, Ch, 500
;Return este return se lo saque por que si no, no andaba

Do:
...
Return

Ch:
SetTimer, Ch, Off
If (WinExist("ahk_class 3948"))
{
SetTimer, Do, Off
Gosub, Da
SetTimer, Do, On
}
SetTimer, Ch, On
Return

Da:

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 21 guests