Como faço para verificar se meu sistema está inoperante??
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
Curtidas 0
Respostas
Nerdex
23/12/2004
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...
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...
GOSTEI 0
Ltres
23/12/2004
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 !!
GOSTEI 0
Titanius
23/12/2004
Amigo,
Defina um const
Agora
depois um Timer, este verifica se o Tempo Idle é igual ao MaxTimeOut na const, se for, executa a opção!
Espero ter ajudado!
[]s
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
GOSTEI 0
Ltres
23/12/2004
Só uma coisa q naum entendi. Qaundo ele executa a procedure PegarMensagens? Ali tem so a implementation dela
GOSTEI 0
Titanius
23/12/2004
foi mal mesmo cara, esqueci desse ´detalhe´
:D
[]s
procedure TForm1.FormCreate(Sender: TObject); begin TimeOut := 0; // zera o contador do idle.... Application.OnMessage := PegarMensagens end;
:D
[]s
GOSTEI 0
Ltres
23/12/2004
Blz funcionou perfeitamente! Valeu 8)
GOSTEI 0
Dpinho
23/12/2004
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
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
GOSTEI 0
Ltres
23/12/2004
Declare a unit Messages na uses de sua unit
GOSTEI 0
Dpinho
23/12/2004
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?
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?
GOSTEI 0
Marcelo Saviski
23/12/2004
garanta que o Interval do timer vai serr = 1000
GOSTEI 0
Dpinho
23/12/2004
Sim o intervalo é de 1000
GOSTEI 0