Fórum Como faço para verificar se meu sistema está inoperante?? #263319

23/12/2004

0

Boa noite, precisava saber como posso fazer para verificar se meu sistema está inoperante, como se fosse a proteção de tela do windows, mesmo meu sistema estando em segundo plano ?


Ltres

Ltres

Responder

Posts

24/12/2004

Nerdex

Se o seu sistema ficar em 2º plano, ele ainda fica operante... Ok...
Mas, de uma forma, creio que o evento OnMouseMove é uma saída para detectar se o usuário está ´antenado´ para com a aplicação...


Responder

Gostei + 0

24/12/2004

Ltres

a parte do mousemove eu já usei obrigado pela dica, mas meu sistema tem uma grande facilidade em teclas de atalho, muitos usuarios nem aomenos usam mouse, precisaria também verificar em todos os forms se alguma tecla foi precionada !!


Responder

Gostei + 0

24/12/2004

Titanius

Amigo,

Defina um const
 MaxTimeOut = 10; // tempo para bloquear a estação, em minutos.


Agora


procedure TForm1.PegarMensagens(var Msg: TMsg; var Pegou: Boolean);
begin
 case Msg.Message of
  WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, WM_RBUTTONDBLCLK,
   WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN,
   WM_NCLBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCRBUTTONDOWN,
   WM_DEADCHAR, WM_KEYDOWN, WM_SYSCHAR, WM_SYSKEYDOWN,
   WM_SYSDEADCHAR:
   begin
    TimeOut := 0;
    IdleTmr.Enabled := not IdleTmr.Enabled;
    IdleTmr.Enabled := not IdleTmr.Enabled;
   end;
 end;
end;


depois um Timer, este verifica se o Tempo Idle é igual ao MaxTimeOut na const, se for, executa a opção!

procedure TForm1.IdleTmrTimer(Sender: TObject);
begin
 Inc(TimeOut);
 if (TimeOut = MaxTimeOut) then
 begin
//Zera os minutos inativos, se for igual ao número de minutos desejados
  TimeOut := 0;
  Bloquearestaodetrabalho1Click(Sender);
  IdleTmr.Enabled := not IdleTmr.Enabled;
 end;
end;





Espero ter ajudado!

[]s


Responder

Gostei + 0

24/12/2004

Ltres

Só uma coisa q naum entendi. Qaundo ele executa a procedure PegarMensagens? Ali tem so a implementation dela


Responder

Gostei + 0

24/12/2004

Titanius

foi mal mesmo cara, esqueci desse ´detalhe´

procedure TForm1.FormCreate(Sender: TObject);
begin
 TimeOut := 0; // zera o contador do idle....
 
 Application.OnMessage := PegarMensagens
end;


:D

[]s


Responder

Gostei + 0

24/12/2004

Ltres

Blz funcionou perfeitamente! Valeu 8)


Responder

Gostei + 0

08/05/2005

Dpinho

estou tentando utilizar esta função porem esta dando idetificação não declarada nas propriedades:
WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, WM_RBUTTONDBLCLK,
WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN,
WM_NCLBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCRBUTTONDOWN,
WM_DEADCHAR, WM_KEYDOWN, WM_SYSCHAR, WM_SYSKEYDOWN,
WM_SYSDEADCHAR:

utilizo Delphi 7
ajude por favor


Responder

Gostei + 0

08/05/2005

Ltres

Declare a unit Messages na uses de sua unit


Responder

Gostei + 0

08/05/2005

Dpinho

nterface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
IdleTmr: TTimer;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure PegarMensagens(var Msg: TMsg; var Pegou: Boolean);
procedure IdleTmrTimer(Sender: TObject);
private
TimeOut :Integer;

{ Private declarations }
public
{ Public declarations }
end;
Const
MaxTimeOut = 1; // tempo para bloquear a estação, em minutos.
var
Form1: TForm1;

implementation


{$R *.dfm}


procedure TForm1.PegarMensagens(var Msg: TMsg; var Pegou: Boolean);

begin
case Msg.Message of
WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, WM_RBUTTONDBLCLK,
WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN,
WM_NCLBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCRBUTTONDOWN,
WM_DEADCHAR, WM_KEYDOWN, WM_SYSCHAR, WM_SYSKEYDOWN,
WM_SYSDEADCHAR:
begin
TimeOut := 0;
IdleTmr.Enabled := not IdleTmr.Enabled;
IdleTmr.Enabled := not IdleTmr.Enabled;
end;
end;
end;

procedure TForm1.IdleTmrTimer(Sender: TObject);
begin
Inc(TimeOut);
if (TimeOut = MaxTimeOut) then
begin //Zera os minutos inativos, se for igual ao número de minutos desejados
TimeOut := 0;
ShowMessage(´mostrou o mouse´);
//Bloquearestaodetrabalho1Click(Sender);
IdleTmr.Enabled := not IdleTmr.Enabled;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
TimeOut := 0; // zera o contador do idle....
Application.OnMessage := PegarMensagens
end;

end.

Estou tentando resolver este codigo, o normal seria depois de 1 minuto sem utilizar o mouse ou teclado retornase o messagebox, ma não acontece nada alguem pode ajudar?


Responder

Gostei + 0

09/05/2005

Marcelo Saviski

garanta que o Interval do timer vai serr = 1000


Responder

Gostei + 0

09/05/2005

Dpinho

Sim o intervalo é de 1000


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar