• Sábado 14 de Diciembre de 2024, 20:25

Autor Tema:  detectando entrada y salida al sistema  (Leído 1579 veces)

GsOiD

  • Miembro activo
  • **
  • Mensajes: 83
  • Nacionalidad: mx
    • Ver Perfil
detectando entrada y salida al sistema
« en: Miércoles 24 de Septiembre de 2008, 01:31 »
0
Hola que tal, básicamente lo que intento hacer es detectar (y llevar registro) con un programa en c++, las veces que entro en el sistema de windows y cuando me salgo, en la salida considero el hecho de que aveces se apaga por que se va la luz ... no se muy bien por donde empezar... bueno al menos se que  debe ser un programa residente en memoria xD...  ando leyendo algunas cosas sobre ese tipo de programas, pero cualquier aportación me sería muy útil...

Gracias !   :)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: detectando entrada y salida al sistema
« Respuesta #1 en: Miércoles 24 de Septiembre de 2008, 10:07 »
0
Parece muy sencillo... El programa simplemente debe escribir en un fichero (o en el registro) al arrancar Windows. Para que el programa se ejecute solo en el arranque, debes añadirlo o bien al menú Inicio/Programas/Inicio o bien a la clave de registro de arranque (ahora mismo no me acuerdo cuál era, pero una búsqueda en Google y tienes los resultados). En cuanto a ejecutarlo al apagarse, debes tener en cuenta que no es tan sencillo, puesto que si se va la luz desde luego no hay manera de salvar nada. Tendrías que capturar la señal de apague o reinicio de Windows y actuar en consecuencia. Google seguro que tiene algunas respuestas. No temas mirar código de virus y demás bichos puesto que son los más avanzados en estos temas. Un saludo!

GsOiD

  • Miembro activo
  • **
  • Mensajes: 83
  • Nacionalidad: mx
    • Ver Perfil
Re: detectando entrada y salida al sistema
« Respuesta #2 en: Miércoles 24 de Septiembre de 2008, 13:04 »
0
Hi  !, encontré cosillas de virus, pero la mayoría hechos en ensamblador, y en como poner el programa residente en memoria de eso ya no hay duda.. creo que comenzaré detectando (para la salida) que se apague sólo cuando el usuario teclee apagar o reiniciar... pero cualquier aportación es bienvenida :)...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: detectando entrada y salida al sistema
« Respuesta #3 en: Miércoles 24 de Septiembre de 2008, 14:32 »
0
Después de una búsqueda muy corta en Google, te puedo decir que cuando tu aplicación reciba el mensaje WM_EndSession, es que Windows se está cerrando. Lo otro debería ser coser y cantar. ¡Saludos, colega!

GsOiD

  • Miembro activo
  • **
  • Mensajes: 83
  • Nacionalidad: mx
    • Ver Perfil
Re: detectando entrada y salida al sistema
« Respuesta #4 en: Miércoles 24 de Septiembre de 2008, 15:12 »
0
Encontré algo relacionado con lo que hago en eta página : http://flash.programacion.net/foros/28/msg/220202/   es relacionado con lo que m0skit0 menciona... :) thanks !!  mi mente se aclara...  

 :comp:  ya me emocioné con esta onda.. :P

GsOiD

  • Miembro activo
  • **
  • Mensajes: 83
  • Nacionalidad: mx
    • Ver Perfil
Re: detectando entrada y salida al sistema
« Respuesta #5 en: Viernes 3 de Octubre de 2008, 06:13 »
0
Finalmente lo hice en visual basic u_U... Hace tiempo que quería subir este código, pero mucho trabajo, mucho  :comp: , y con la emoción de haber conocido a Rafael Nuñez alias RaFa, pues hasta se me olvidó.. pues aquí pongo el código de como terminé este trabajo:
Código: Text
  1.  
  2.  
  3. Public Class Form1
  4.  
  5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.  
  7. Shell("reg add hklmsoftwaremicrosoftwindowscurrentversionrun /v programa /t reg_sz /d C:nombre.exe /f ")
  8.  
  9.    Dim fechahorainicio As DateTime = DateTime.Now
  10.    My.Computer.FileSystem.WriteAllText("C:a.txt", vbCrLf, True)
  11.    My.Computer.FileSystem.WriteAllText("C:a.txt", vbCrLf, True)
  12.    My.Computer.FileSystem.WriteAllText("C:a.txt", "Entro al sistema:", True)
  13.    My.Computer.FileSystem.WriteAllText("C:a.txt", fechahorainicio, True)
  14.    My.Computer.FileSystem.WriteAllText("C:a.txt", vbCrLf, True)
  15.  
  16. End Sub
  17. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  18.         Shell("notepad.exe C:a.txt")
  19. End Sub
  20. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles MyBase.FormClosing
  21.  
  22.   Dim fechahorafinal As DateTime = DateTime.Now
  23.  
  24.   My.Computer.FileSystem.WriteAllText("C:a.txt","Finalizó:", True)
  25.   My.Computer.FileSystem.WriteAllText("C:a.txt", fechahorafinal, True)
  26.  
  27.   Dim messageBoxVB As New System.Text.StringBuilder()
  28.  
  29.      messageBoxVB.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason)
  30.     messageBoxVB.AppendLine()
  31.     messageBoxVB.AppendFormat("{0} = {1}", "Cancel", e.Cancel)
  32.     messageBoxVB.AppendLine()
  33.     MessageBox.Show(messageBoxVB.ToString(), "FormClosing Event")
  34.  
  35. End Sub
  36.  
  37. End Class
  38.  
  39.  

este programa se coloca en el registro de windows para iniciar el programa cuando inicia el sistema, después captura la fecha y hora en la que entró y lo guarda en un archivo txt, finalmente se mantiene alerta hasta que alguien cierra el programa, de la forma que sea, ya sea por que el sistema se apaga, o por que cerraron el form, o reinician el sistema, etc...  como todo código se puede mejorar, pero por el momento, así me sirve :P, le agregaré cosas después  :comp: