Fórum Como configurar um timer para fechar uma tela inativa no Delphi2009? #415433

14/04/2012

0

Ola amigos da comunidade.
Estou desenvolvendo um pequeno e simples sistema no delphi 2009 (ainda sou iniciante nesta área) , e neste sistema de controle ,vários usuários poderão realizar diferentes tarefas: cadastrar clientes, gerar relatórios, fazer consultas, etc , e todas estas tarefas estarão acessíveis de acordo com a categoria de acesso de cada usuário que será definida no momento do cadastro deste referido usuário , criei então uma tela de login que só abrirá a tela principal do sistema se o login e senha digitada , conferirem com as que estão armazenadas no banco de dados.
Muito bem, preciso de ajuda no seguinte:
Como posso configurar um timer que; quando o sistema ficar inativo por um determinado tempo ele volte a tela de login para que o usuário volte a digitar as informações novamente?
Ficarei grato se alguém puder me ajudar.
Obrigado a todos.
Pedro Ferreira

Pedro Ferreira

Responder

Posts

16/04/2012

Hilton Marcon

function SecondsIdle: DWord;
var liInfo: TLastInputInfo;
begin
liInfo.cbSize := SizeOf(TLastInputInfo) ;
GetLastInputInfo(liInfo) ;
Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;


Esta é uma função que utilizo em um servidor Windows2008. Ela traz o tempo, em segundos, que o usuário não está usando o computador. Ela atende meu caso porque nosso sistema roda em TS.
Veja se te ajuda.
Mas se o que você precisa é de uma função que verifique o tempo inativo do seu programa, penso que vai ter que trabalhar com um timer que é zerado a cada vez que o usuário pressiona uma tecla e, penso eu, não será muito vantajoso em termos de performance.
Abraço.
Responder

Gostei + 0

16/04/2012

Marco Salles

function SecondsIdle: DWord;
var liInfo: TLastInputInfo;
begin
liInfo.cbSize := SizeOf(TLastInputInfo) ;
GetLastInputInfo(liInfo) ;
Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;


A função API GetLastInputInfo funcionase o aplicativo está sendo executado no Win2000 e acimaa

vc pode definir um Thread para rolar o processo

segue apenas um exemplo

//definição aleatória de ocioisidade
const
maxTimeOutValue = 10;

function SecondsIdle: DWord;
var
liInfo: TLastInputInfo;
begin
liInfo.cbSize:= sizeof (TLastInputInfo);
GetLastInputInfo (liInfo);
Result:= (GetTickCount - liInfo.dwTime) DIV 1000;
end;




procedure TForm10.FormShow(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm10.Timer1Timer(Sender: TObject);
begin
//compara a ociosidade
if SecondsIdle < maxTimeOutValue  then
  caption:=Format (Sistema IDLE últimos %d segundos, [SecondsIdle])
else
  close; //fecha a janela
end;


Responder

Gostei + 0

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

Aceitar