timer + variable

Iniciado por mojolloyo20, 6 Marzo 2008, 01:01 AM

0 Miembros y 1 Visitante están viendo este tema.

mojolloyo20

hola amigos espero que el titulo este bien.

bueno escribo esto por que tengo problemas,para hacer que mi programa

realice cada x tiempo una funcion diferente.

he trabajado anterior mente con timers pero de 1 en uno y este proyecto lleba unos 6.

ayer hice pruebas he iban todos bien y guarde los canbios y me acoste.

y hoy ya no funcaba 2 timer y pude areglar 1.

asin llevo ya tiempo y ya no se como darle mas bueltas.

bueno os dire como lo ago,aver en que fallo.

---------------------------------------------------------------
este proyecto se supone que abriria NOTEPAD cada 5 minutos,regedit cada 7 y el explorer cada 4 minutos.

empezamos declarando la funcion  ShellExecute y declarando la variable minuto.


Private Declare Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Dim minito As Long


Private Sub Form_Load()----->cuando se inicie el programa
Timer1.Interval = 60000-------->timer1 lo ponemos declarado con un intervalo de =milisegundo
Timer2.Interval = 60000
Timer3.Interval = 60000
Timer1.Enabled = True-------->activamos el timer1 empieza la accion
End Sub


Private Sub Timer1_Timer()
If "5" Then----->cada 5 minutos
Call ShellExecute(Me.hwnd, "Open", ("C:\WINDOWS\NOTEPAD.EXE"), "", "", 1)----
--->ejecutamos NOTEPAD.EXE
minuto = 0------->ponemos el contador a 0
minuto = minuto + 1--------> se añade un contador
End If
Timer2.Enabled = True----->ejecutamos timer 2
End Sub

este sin comentarios------>

Private Sub Timer2_Timer()
If "7" Then
Call ShellExecute(Me.hwnd, "Open", ("C:\WINDOWS\regedit.exe"), "", "", 1)
minuto = 0
minuto = minuto + 1
End If
Timer3.Enabled = True
End Sub

Private Sub Timer3_Timer()
If "4" Then
Call ShellExecute(Me.hwnd, "Open", ("C:\WINDOWS\explorer.exe"), "", "", 1)
minuto = 0
minuto = minuto + 1
End If
Call Form_Load ejecutamos de nuevo la parte del codigo que hay en el frond.

End Sub


le he dado mil bueltas al codigo.

a las 00:55 lo ejecute y a las 00:56 me ejecuto los 3 al mismo tiempo casi por milisegundos.

aver quien me puede giar gracias y salu2
Lo reconozco
fumo porros a diario
me fumo uno y es como poner la radio
pero por dentro de mi amarga cabeza
siempre tan sola y tan llena de tristeza
Me salen la s canciones que a mí más me molan
las musiquillas que ha mí más me motivan
las amarguras se vuelven amapolas
y las tristezas me alegran la vida
Anda dame que fume
porque me siento sólo
dame de fumar
porque no quiero estar triste

Chefito

Pufffff.....no te lies tanto con algo tan sencillo. El codigo con un solo timer sería algo así:
Private Sub Form_Load()
Timer1.Interval = 60000
End Sub

Private Sub Timer1_Timer()
Static Notepad As Integer, Regedit As Integer, Explorer As Integer
If Notepad = 5 Then
    Shell "notepad"
    Notepad = 0
End If
If Regedit = 7 Then
    Shell "regedit"
    Regedit = 0
End If
If Explorer = 3 Then
    Shell "explorer"
    Explorer = 0
End If
Notepad = Notepad + 1
Regedit = Regedit + 1
Explorer = Explorer + 1
End Sub

Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

juancho77

minuto = 0
minuto = minuto + 1


=

minuto = 1


:o

Chefito

Ya te digo juancho77  :rolleyes:. Y los if "5" then....... dios.....eso hace daño a la vista  :laugh:. Debes mirarte algo mas el lenguaje  mojolloyo20, que estas un poco liadillo.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

krackwar

primero que nada la variable no es minuto si no minito el code(si querias poner minuto ponelo)
puede quedar asi

Private Sub Form_Load()
Timer1.Interval = 60000
minuto  = 0
End Sub
Private Sub Timer1_Timer()
if minuto = 4 then shell ("explorer.exe")
if minuto = 5 then shell ("notepad.exe")
if minuto = 7 then
shell ("regedit.exe")
minuto = 0
end if
minuto = minuto + 1
End Sub
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.

mojolloyo20

perdonemen amigos,ami me poneis un leon a 2 cm y no lo veo  :D

la verdad es que estoy aprendiendo solo y estoy muy pegado pero que muy.

me hincho de leer, de probar, de darle vultas.

y darles muchas gracias por contestar y aportar su tiempo.


krackwar me podias dar un o unos  link bueno, asin sobre lenguaje, para ir aprendiendo.

no suelo usar vb,solo cuando me aparece algun proyecto en mente.

tonces aprendo por el camino y muy dificil y acompañado del ingles.

he visto mucha veces buena info pero los idimas son fundamentales.


lo de hacer daño a la vista no lo entendi muy bien,pero me lo tomo como que el codec me quedo muy feo y de grandes bytes  >:(

pero no me ofendo en y decir a  juancho77  sin ofender, que tampoco es para poner esa cara jajajaj.

si no me equivoco de nuevo a lo que me referia yo era algo asin:

Private Sub Timer1_Timer()
If minuto = "5" Then----->cada 5 minutos
Call ShellExecute(Me.hwnd, "Open", ("C:\WINDOWS\NOTEPAD.EXE"), "", "", 1)----
--->ejecutamos NOTEPAD.EXE
minuto = 0------->ponemos el contador a 0
minuto = minuto + 1--------> se añade un contador
End If
Timer2.Enabled = True----->ejecutamos timer 2
End Sub


bueno y muchas gracias de nuevo,ya mañana seguire haciendo pruebas.

tendre que hacer una 3º version jajajaja.

un salu2 amigos.
Lo reconozco
fumo porros a diario
me fumo uno y es como poner la radio
pero por dentro de mi amarga cabeza
siempre tan sola y tan llena de tristeza
Me salen la s canciones que a mí más me molan
las musiquillas que ha mí más me motivan
las amarguras se vuelven amapolas
y las tristezas me alegran la vida
Anda dame que fume
porque me siento sólo
dame de fumar
porque no quiero estar triste

krackwar

#6
explicame bien lo que quieres quieres que se ejecute el explorer despues que pasen 5 minutos i se ejecute el notepad i luego pasen 7 minutos mas i se ejecute el regedit en total el tiempo que ocupas es de 16 minutos o quieres que todo se haga en 7 minutos?
bueno si quieres lo del primer ejemplo seria asi

Private Sub Form_Load()
dim bloqueo1
dim bloqueo2
Timer1.Interval = 60000
minuto  = 0
End Sub
Private Sub Timer1_Timer()
if minuto = 4 and bloqueo1 = "no" then
shell ("explorer.exe")
bloqueo1 = "si"
minuto = 0
end if
if minuto = 5  and bloqueo2 = "no" then 
shell ("notepad.exe")
bloqueo2= "SI"
minuto = 0
end if
if minuto = 7 then
shell ("regedit.exe")
minuto = 0
bloqueo1 =  "no"
bloqueo2 = "no"
end if
minuto = minuto + 1
End Sub
perdon si yo me equivoque pero no puedo provar el code ya que no tengo en este momento el vb6 :-( :-( :-(
links para aprender vb:
recompilacion de linkshttp://foro.elhacker.net/index.php/topic,68352.0.html
recompilacion cosas para iniciar vb(aunque parece mucho en 2  semanas te puedes leer todos los manuales(los ejemplos veelos sirven much0)http://invisiblehack.mforos.com/1109918/6729829-inicias-en-vb6/
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.

Chefito

Cita de: mojolloyo20 en  6 Marzo 2008, 01:01 AM
este proyecto se supone que abriria NOTEPAD cada 5 minutos,regedit cada 7 y el explorer cada 4 minutos.
Yo entiendo eso como se lo puse al principio. Por cierto krackwar, cuidado con las variables. Las que declaras en los procedimientos son locales y cuando sales del procedimiento pierden su valor. Mira dim bloqueo1,bloqueo2....deben de estar fuera para hacerlas globales. Y tampoco has declarado minuto ni como global ni como estatica, o sea que su valor siempre sera 0 y 1 justo al final del timer ;).
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

krackwar

 :xD si tienes razón perdon pero es que oi dia fue mi primer dia de clases i dormi menos de 4hrs i en este momento estoi que me desmayo del sueño :-\ :-\
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.

cassiani

#9
Disculpen mi intromisión pero llamo mi atención...

En su primer post mojolloyo20 usa tres timer para ejecutar tres aplicaciones en los minutos 4, 5 y 7 por separado, eso me da a entender que quiere ejecutarlos por grupo de 3 minutos de diferencia y por aplicación, por dos minutos, en ese sentido, este seria la manera mas simplificada de hacerlo:
Código (vb) [Seleccionar]
Option Explicit
Dim Minuto As Integer

Private Sub Form_Load()
    Timer1.Interval = 60000
    Minuto = 0
End Sub

Private Sub Timer1_Timer()
    Select Case Minuto
        Case 4: Shell ("explorer.exe")
        Case 5: Shell ("notepad.exe")
        Case 7: Shell ("regedit.exe"): Minuto = 0   
    End Select
    Minuto = Minuto + 1
End Sub


Cabe acotar que errores como estos solo confunden mas al principiante:
Cita de: krackwar en  6 Marzo 2008, 02:57 AM
Private Sub Form_Load()
dim bloqueo1 --> dentro del sub?
dim bloqueo2 --> ||

if minuto = 5 then and bloqueo2 = "no" then 
Hay que asegurarse de lo que se esta postiando... por lo demás todo esta bien...

¡S4lu2!