Pregunta

Hay documentación en Internet que muestra que Windows cambia el comportamiento del comando NotifyIcon.BalloonTipShown si el usuario está actualmente inactivo y esto es detectado comprobando eventos de teclado y mouse.Actualmente estoy trabajando en una aplicación que pasa la mayor parte del tiempo en la bandeja del sistema, pero de vez en cuando aparecen múltiples mensajes emergentes y me gustaría evitar que el usuario se pierda alguno de ellos si actualmente está fuera del sistema. sistema.Dado que las sugerencias de globos que se muestran actualmente se destruyen si se muestra uno nuevo, quiero posponer su visualización si el usuario no está.

Como tal, ¿hay alguna manera de verificar si el usuario está actualmente inactivo si la aplicación está minimizada en la bandeja del sistema?

¿Fue útil?

Solución

¿Qué tal el Win32? LASTINPUTINFO ¿función?

using System.Runtime.InteropServices;

[DllImport("User32.dll")] 
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

struct LASTINPUTINFO 
{
    public uint cbSize;
    public uint dwTime;
}

Otros consejos

código administrado

Verifique la posición del mouse cada segundo.Si hay mensajes nuevos para el usuario, mantenlos hasta que detectes algún movimiento del ratón.

Código no administrado

Ver Detección de tiempo de inactividad con ganchos para mouse y teclado

Gracias por las respuestas, terminé eligiendo la función GetLastInputInfo ya que es bastante sencillo de implementar en la aplicación en la que estoy trabajando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top