Se você estiver disposto a hackeá-lo e procurar por um protetor de tela para eliminar a inatividade, você também pode usar o powershell para ver se a sessão está inativa (ou seja, o computador está bloqueado):
QUERY SESSION /server:MachineName UserName
ele usa a interface de serviços de terminal para ver se um usuário está conectado a uma sessão. Isso funciona porque, nas versões modernas do Windows, todos os usuários locais são tratados como sessões de console do computador. Os dois status de interesse são:
- Ativo : conectado e usando
- Desconectado : logado, mas a tela está bloqueada ou o usuário está desconectado
Como é baseado na antiga funcionalidade qwinsta, em vez de ser totalmente OO, você precisará fazer alguma manipulação de string se quiser um booleano (isto é, "Active").
Para uma figura precisa (e quais são eles mesmos os protetores de tela), olhe para a chamada da API win32 LastInputInfo () , mas é necessário executá-la no contexto do usuário, que geralmente é um separador de negócios. você precisa de monitoramento remoto. Aqui está o artigo do MSDN: link