Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: mojolloyo20 en 6 Marzo 2008, 01:01 am



Título: timer + variable
Publicado por: mojolloyo20 en 6 Marzo 2008, 01:01 am
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


Título: Re: timer + variable
Publicado por: Chefito en 6 Marzo 2008, 01:24 am
Pufffff.....no te lies tanto con algo tan sencillo. El codigo con un solo timer sería algo así:
Código:
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.


Título: Re: timer + variable
Publicado por: juancho77 en 6 Marzo 2008, 01:54 am
Código:
minuto = 0
minuto = minuto + 1

=

Código:
minuto = 1


 :o


Título: Re: timer + variable
Publicado por: Chefito en 6 Marzo 2008, 02:00 am
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.


Título: Re: timer + variable
Publicado por: krackwar en 6 Marzo 2008, 02:10 am
primero que nada la variable no es minuto si no minito el code(si querias poner minuto ponelo)
puede quedar asi
Código:
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


Título: Re: timer + variable
Publicado por: mojolloyo20 en 6 Marzo 2008, 02:26 am
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.


Título: Re: timer + variable
Publicado por: krackwar en 6 Marzo 2008, 02:57 am
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
Código:
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/)


Título: Re: timer + variable
Publicado por: Chefito en 6 Marzo 2008, 03:22 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.


Título: Re: timer + variable
Publicado por: krackwar en 6 Marzo 2008, 03:28 am
 :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 :-\ :-\


Título: Re: timer + variable
Publicado por: cassiani 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:
Código
  1. Option Explicit
  2. Dim Minuto As Integer
  3.  
  4. Private Sub Form_Load()
  5.    Timer1.Interval = 60000
  6.    Minuto = 0
  7. End Sub
  8.  
  9. Private Sub Timer1_Timer()
  10.    Select Case Minuto
  11.        Case 4: Shell ("explorer.exe")
  12.        Case 5: Shell ("notepad.exe")
  13.        Case 7: Shell ("regedit.exe"): Minuto = 0    
  14.    End Select
  15.    Minuto = Minuto + 1
  16. End Sub

Cabe acotar que errores como estos solo confunden mas al principiante:
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!


Título: Re: timer + variable
Publicado por: Chefito en 6 Marzo 2008, 14:17 pm
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.


Título: Re: timer + variable
Publicado por: krackwar en 7 Marzo 2008, 02: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:
Código
  1. Option Explicit
  2. Dim Minuto As Integer
  3.  
  4. Private Sub Form_Load()
  5.    Timer1.Interval = 60000
  6.    Minuto = 0
  7. End Sub
  8.  
  9. Private Sub Timer1_Timer()
  10.    Select Case Minuto
  11.        Case 4: Shell ("explorer.exe")
  12.        Case 5: Shell ("notepad.exe")
  13.        Case 7: Shell ("regedit.exe"): Minuto = 0    
  14.    End Select
  15.    Minuto = Minuto + 1
  16. End Sub

Cabe acotar que errores como estos solo confunden mas al principiante:
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 :-\ :-\


Título: Re: timer + variable
Publicado por: mojolloyo20 en 7 Marzo 2008, 22:10 pm
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


Título: Re: timer + variable
Publicado por: Chefito en 8 Marzo 2008, 00:14 am
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.


Título: Re: timer + variable
Publicado por: mojolloyo20 en 9 Marzo 2008, 18:02 pm
gracias por la info chefito
un salu2