Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dica] Detectar tempo inativo do PC

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi [Dica] Detectar tempo inativo do PC

    Olá pessoal =)

    Aqui vou falar como detectar há quanto tempo a máquina está inativa.

    Isso é útil para aplicações que precisam de muito processamento e ao mesmo tempo não podem atrapalhar o usuário.

    Só uma explicação rápida do algoritmo, porque não gosto de jogar códigos e não explicar =P

    Basicamente, existem 2 jeitos (talvez mais) de se achar o tempo inativo de uma máquina. O primeiro deles seria colocar um hook no mouse e no teclado, mas isso seria extremamente invasivo e poderia causar bugs, alem disso teria de ser injetado em todos os processos.
    As versões do Windows a partir do Windows 2000 possuem uma função na API que facilita nosso trabalho, a função GetLastInputInfo , ela nos fornece quando ocorreu o último evento de mouse ou teclado, com posse dessa informação, podemos pegar a hora atual e dela subtrair o tempo fornecido pela função, e temos o tempo em que a máquina está inativa.

    Coloque no seu form um Label, chamado Label1 e um Timer (com 100 ms de intervalo), chamado Timer1.

    Abaixo de Implementation, coloque a função que diz há quanto tempo a máquina está inativa:
    Código:
    function Inativo: Integer;
    var
       InpInfo: TLastInputInfo;
    begin
       InpInfo.cbSize := SizeOf(TLastInputInfo) ;
       GetLastInputInfo(InpInfo) ;
       Result := (GetTickCount - InpInfo.dwTime) DIV 1000;
    end;
    Essa função retorna há quantos segundos a máquina está inativa.


    Agora, no evento onTick do Timer1, coloque:
    Código:
    Label1.Caption:='Máquina inativa por ' + inttostr(Inativo) + ' segundos';
    Pronto

    Espero que gostem.

    Flws
    Last edited by .IndependentResearch.; 18-12-2009, 19:49.
    Black-Hat.
    Similar Threads

  • Font Size
    #2
    Valeu cara o/
    Salvo minha vida ^^
    Tava louco por um comando deste!

    Comment

    X
    Working...
    X