Existe uma maneira de verificar se o usuário está ocioso?
-
09-06-2019 - |
Pergunta
Existe alguma documentação na internet que mostra que o Windows altera o comportamento do NotifyIcon.BalloonTipShown comando se o usuário está inativo e esta é detectados pela verificação de eventos do mouse e do teclado.Atualmente, estou trabalhando em um aplicativo que passa a maior parte do tempo na bandeja de sistema, mas de pop-ups várias dicas de balão ao longo do tempo e gostaria de impedir que o usuário, desde a falta de qualquer deles, se eles estão atualmente fora do sistema.Uma vez que qualquer exibido atualmente as dicas de balão são destruídas se um novo é apresentado, eu quero segurar em exibi-los se o usuário estiver ausente.
Como tal, existe alguma maneira de verificar se o usuário está inativo se o aplicativo é minimizado para a bandeja do sistema?
Solução
Como sobre o Win32 LASTINPUTINFO função?
using System.Runtime.InteropServices;
[DllImport("User32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
Outras dicas
Código gerido
Verificar a posição do mouse a cada segundo.Se existem novas mensagens para o usuário, segurá-los até que você detectar qualquer movimento com o mouse.
O código não gerenciado
Ver Detectar o Tempo de Inactividade com o Mouse e o Teclado Ganchos
Obrigado pelas respostas, eu acabei indo com o GetLastInputInfo função como ele é bastante simples de implementar na aplicação que estou a trabalhar.