Ver Mensaje Individual
  #2  
Antiguo 05-11-2004
bumiga bumiga is offline
Miembro
 
Registrado: sep 2004
Posts: 28
Reputación: 0
bumiga Va por buen camino
Espero que el siguiente codigo te sirva, no es mio, lo baje de Internet, pero no me acuerdo de donde y por eso no puedo colocar los creditos a la(s) persona(s) que lo publicaron, mis disculpas

Código:
Unit DetecIdleMain
 
interface
 
uses
  windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls
 
type
 TDetectIdleForm = Class(TForm)
   IdleTimer: TTimer;
   StatusBar1: TStatusBar;
   procedure FormCreate(Sender: TObject);
   procedure ResetInactive(var Msg: TMsg; var Handled: Boolean);
   procedure IdleTimerTimer(Sender: TObject);
 private
   fLastActive: TDateTime;
   systemInactive: Boolean;
 public
end;
 
var
  DetecIdleForm: TDetecIdleForm;
 
implementation
 
{$R *.dfm}
procedure TDetectIdleForm.IdleTimerTimer(Sender: TObject);
begin
  if ((fLastActive + EncodeTime(0,0,30,0)) < Now) then
  begin
	systemInactive := False;
	IdleTimer.Enable := False;
  end;
end;
 
procedure TDetectIdleForm.FormCreate(Sender: TObject);
begin
  Application.OnMessage := ResetInactive;
end;
 
procedure TDetectIdleForm.ResetInactive(var Msg: TMsg; var Handled: Boolean);
begin
 if (Msg.message = WM_SYSCOMMAND) then
  if (msg.wParam = SC_SCREENSAVE) then
   if (not systemInactive) then
	begin
	  //Do something... User is inactive
	  StatusBar1.Panels[0].text := TimeToStr(Now);
	  IdelTimer.Enable := True;
	end;
 SystemInactive := True;
 fLastActive := Now;
end;
 
end.
Responder Con Cita