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.
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
Curtir tópico
+ 0
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.
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;
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
Clique aqui para fazer login e interagir na Comunidade :)