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
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.
minuto = 0
minuto = minuto + 1
=
minuto = 1
:o
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.
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
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.
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 links
http://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/ (http://invisiblehack.mforos.com/1109918/6729829-inicias-en-vb6/)
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.
: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 :-\ :-\
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:
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!
C@ss¡@n¡, tu colaboración siempre es buena ;)....y la de cualquiera claro. No se, yo lo realizé así porque pensé que quería que se ejecutase las aplicaciones, una cada 4 minutos justos, otra cada 5 y otra cada 7...practicamente independientes del tiempo una de otra. De mi forma se ejecutan así. De tu forma se ejecutan así la primera vez, pero la segunda vez ya sería meterle 3 minutos más a la primera y 2 minutos más a la segunda, y así sucesivamente, porque tu pones el contador a 0 cuando ha llegado a los 7 minutos, en cambio yo utilizo 3 contadores distintos para mantener los tiempos iguales de la carga de aplicaciones. En definitiva, dos puntos de vista distintos ;). Supongo que así tendrá donde elegir.
Por cierto krackwar, no te preocupes, fallos peores he tenido yo ;). Además, tienes escusa......la falta de sueño es muy mala :P.
Y mojolloyo20, cuando hago hace daño a la vista es que, en este caso, es un fallo garrafal y no puedes ni verlo de lo mal que está :laugh:. Pero esa expresión y otras, no te las tomes a mal, van con mucha ironia ;).
Saludos.
Cita de: C@ss¡@n¡ en 6 Marzo 2008, 05:51 AM
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:
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!
disculpen por los errores pero como explique no veia nada ni me acordaba de nada :-\ :-\
hola amigos,perdon el retrasillo,vi los codigos he estado estudiandolo un poco.
si era como deciais en total a de tardar unos 16 minutos en hacaerlo todo.
krackwar,no te preocupes amigo, que el que tiene voca se equivoca.
ademas los errores se pueden corregir y lo que importa es que me aveis ayudado.
C@ss¡@n¡: a lo 1º no entendi lo de por grupo de 3 minutos ,supongo que te referias que de 4 a 5 ban 1 y de 5 a 7 2 y sumamos el 1 y el 2 y obtenemos los 3 minutos.
estuve buscando info sobre el case,aun que no pude mirarlo muy detayadamente
mas o menos es como un sustitutivo del if pero en moderno.
bueno lo que no entiendo del codigo, es la parte en la que ejecutamos los programas explorer.exe ect ect sin ponerle el app.Path bamos la direcion en si c:\ ect ect.
bueno vere por hoy aver que puedo hacer un salu2 amigos
Pues el select case de moderno tiene poco ;D. Su funcionamiento es: realiza varias comparaciones por cada case, sobre el contenido de una variable (Select Case variable). Y lo de porque no ponemos los caminos a los archivos, es porque el sistema operativa ya los tiene establecidos, ya que siempre que se quiere ejecutar un programa desde cualquier lugar, primero mira si el programa está en ese lugar y luego revisa estos caminos (path) por si se encuentra allí, y los path donde están estos 3 programas los tiene establecidos el sistema. Para ver los path pon una consola y escribe path y te saldrán los que tenga establecidos el sistema.
Saludos.
gracias por la info chefito
un salu2