Fórum Detectar que o usuário bloqueou o PC #424915

28/09/2012

0

Bom dia a todos!

Estou desenvolvendo uma aplicação pra empresa e precisamos saber o horário que o usuário bloqueia o computador. No logon e logoff foi simples, mas se a pessoa bloquear eu não consegui "capturar" isso.

obrigado!
Etomazett

Etomazett

Responder

Posts

28/09/2012

Leonardo Xavier

você ta utilizando a "user32.dll" no seu sistema, para controlar login e logof?
Responder

Gostei + 0

28/09/2012

Etomazett

você ta utilizando a "user32.dll" no seu sistema, para controlar login e logof?


Na verdade eu não sabia da existência dela :)
Responder

Gostei + 0

28/09/2012

Leonardo Xavier

Com essa Dll ai você consegue registrar os estados do usuário no windows....se tiver duvidas posta ai.
Responder

Gostei + 0

28/09/2012

Etomazett

Com essa Dll ai você consegue registrar os estados do usuário no windows....se tiver duvidas posta ai.


beleza, vou estudar ela e ver oq consigo extrair
Responder

Gostei + 0

01/10/2012

Etomazett

Com essa Dll ai você consegue registrar os estados do usuário no windows....se tiver duvidas posta ai.


Leonardo, eu passei o dia aqui me debulhando nas funções dessa DLL e achei a SwitchDesktop, e então achei esse código aqui:

function IsWorkstationLocked: Boolean;
var
  hDesktop: HDESK;
begin
  Result := False;
  hDesktop := OpenDesktop('default',
    0, False,
    DESKTOP_SWITCHDESKTOP);
  if hDesktop <> 0 then
  begin
    Result := not SwitchDesktop(hDesktop);
    CloseDesktop(hDesktop);
  end;
end;


Coloquei em um Timer assim:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if IsWorkstationLocked = true then
    memo1.Lines.Add('bloqueado'+TimeToStr(now))
    else
    memo1.Lines.Add('liberado'+TimeToStr(now))


Eu bloqueio o computador e qdo volto ele continua inserindo o "liberado".

tem idéia do q pode ser?

Obrigado!
Responder

Gostei + 0

01/10/2012

Etomazett

Problema resolvido...

Dos 3 sites de onde achei essa função, eles tinham um erro no código. A linha
if hDesktop <> 0 then
estava sem o sinal de <> e eu assumi que o certo deveria ser =

agora tá rodando q é uma maravilha ;)
Responder

Gostei + 0

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

Aceitar