Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2004
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 193
Poder: 21
muli Va por buen camino
Capturar ninguna acción

Necesito capturar mientras se esté ejecutando mi programa si existe actividad en el ordenador, es decir, como si yo fuera a lanzar el salvapantallas, que no es el caso, es para que pasado un tiempo sin trabajar en el ordenador se salga fuera del programa automáticamente.

Gracias.

Saludos
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #2  
Antiguo 20-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Busca acerca del evento OnIdle del objeto TApplication.

// Saludos
Responder Con Cita
  #3  
Antiguo 21-05-2004
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 193
Poder: 21
muli Va por buen camino
ok, he puesto lo siguiente y parece que funciona es poco chapucero, pero!

procedure TForm1.MyIdleHandler(Sender: TObject; var Done: Boolean);
begin
Timer1.Enabled:=False;
Timer1.Enabled:=True;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle:= MyIdleHandler;
end;

En el timer tengo el tiempo que quiere el usuario mantener activa la aplicación y cuando llega a cumplirse ese tiempo


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
ShowMessage('han pasado x tiempo sin hacer nada');
utiles.CierraTablas(Datos) // Cierro todas las fuentes de datos
Halt; // cierro el programa
end;

Pero, yo quisiera complicarlo un poco más, desearía capturar también el tiempo de inactivad en el propio windows, tal y como hace el salvapantallas.
Alguna idea?

Gracias, y Saludos
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #4  
Antiguo 21-05-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
muli, intenta encerrar tu código en las etiquetas [ Delphi ] y [ / Delphi ] (pero sin espacios), y tampoco estaría de mal que identases tu código.

Para que veas que tal queda:
Código Delphi [-]
procedure TForm1.MyIdleHandler(Sender: TObject; var Done: Boolean);
  begin
    Timer1.Enabled:=False;
    Timer1.Enabled:=True;
  end;


procedure TForm1.FormCreate(Sender: TObject);
  begin
    Application.OnIdle:= MyIdleHandler;
   end;

procedure TForm1.Timer1Timer(Sender: TObject);
  begin
    Timer1.Enabled:=False;
    ShowMessage('han pasado x tiempo sin hacer nada');
    utiles.CierraTablas(Datos) // Cierro todas las fuentes de datos
    Halt; // cierro el programa
  end;
__________________
:)
Responder Con Cita
  #5  
Antiguo 21-05-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Lo he identado a mano, a si que se van a ver errores de espacio seguro.
__________________
:)
Responder Con Cita
  #6  
Antiguo 21-05-2004
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 193
Poder: 21
muli Va por buen camino
Me parece muy bonito, pero yo espero algo funcional no bonito, seguro que a la gente que le interesa el post le da igual si está en azul o en negrita lo que quiere es que funcione y aprender de la respuesta.

No me interpretes mal, pero me parece que existen cosas mas importantes que la belleza a la hora de contestar.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #7  
Antiguo 21-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Disculpa muli pero la recomendación de DarkByte la pude haber hecho yo o cualquier otro moderador. Te recomiendo que leas este aviso que se encuentra al principio de todos los foros. El colorear el texto y darle una correcta indentación no sólo es para que se vea bonito sino para que sea claro de leer, de manera que no nos da igual. Si deseas ayuda lo correcto es exponer claramente las dudas y ello abarca la legibilidad del código.

// Saludos
Responder Con Cita
  #8  
Antiguo 22-05-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Muli, podrías tambien poner otra aplicación como salvapantallas, y que cuando se ejecutase, enviase un mensaje a tu aplicación con la cual esta se cierra. Después, la aplicación "salvapantallas" ejecutaría el verdadero salvapantallas y se cerraría...

No se, es una posiblilidad, no?
__________________
:)
Responder Con Cita
  #9  
Antiguo 22-05-2004
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 193
Poder: 21
muli Va por buen camino
ok, es una buena idea, puedo tener un proceso corriendo siempre en la aplicación que detecte si está el salvapantallas activado y si éste está activado cerrar la aplicación, lo que pasa es que obligo al usuario a tener un salvapantallas, y no se si estando la aplicación por ejemplo minimizada sigue corriendo el proceso.

Saludos. Gracias.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #10  
Antiguo 22-05-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
O puedes poner dicho proceso como salvapantalla, y que al activarse, cierre la aplicación y después, si el usuario quiere, ejecutar un salvapantallas.
Responder Con Cita
  #11  
Antiguo 22-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a ver, no sé si estoy entendiendo bien.

Aquí el problema es cómo detectar actividad en el ordenador pues la inactividad no tiene problema: si no hay actividad en el ordenador tampoco la hay en tu aplicación. Así, aún cuando el usuario tenga minimizada tu aplicación, si está trabajando en otra cosa la aplicacion no debe cerrarse. ¿Es correcto esto? Porque entonces creo que lo que requieres es un gancho del teclado y del mouse para poder detectar la actividad de éstos en todo el sistema y no sólo en tu aplicación. Si es así te recomiendo que busques acerca de hooks en la ayuda del SDK de Windows. Hay un ejemplo de un gancho del teclado en mi página en la unidad hooks.pas aunque tal parece que dichos ganchos deben implementarse en una dll.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:03:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi