Есть ли способ проверить, не находится ли пользователь в данный момент в режиме ожидания? - PullRequest
3 голосов
/ 21 августа 2008

В Интернете имеется некоторая документация, показывающая, что Windows изменяет поведение команды NotifyIcon.BalloonTipShown, если пользователь в данный момент находится в режиме ожидания, и это определяется путем проверки событий клавиатуры и мыши . В настоящее время я работаю над приложением, которое проводит большую часть своего времени в системном трее, но время от времени выскакивает несколько всплывающих подсказок, и я бы хотел, чтобы пользователь не пропустил ни одну из них, если они в данный момент находятся вдали от система. Поскольку все отображаемые в данный момент всплывающие подсказки уничтожаются, если отображается новый, я хочу отложить отображение их, если пользователь отсутствует.

Есть ли способ проверить, не находится ли пользователь в данный момент в режиме ожидания, если приложение свернуто в системный трей?

Ответы [ 3 ]

4 голосов
/ 21 августа 2008

Как насчет функции Win32 LASTINPUTINFO ?

using System.Runtime.InteropServices;

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

struct LASTINPUTINFO 
{
    public uint cbSize;
    public uint dwTime;
}
1 голос
/ 21 августа 2008

Управляемый код

Проверяйте положение мыши каждую секунду. Если есть новые сообщения для пользователя, удерживайте их, пока не обнаружите какое-либо движение с помощью мыши.

Неуправляемый код

См. Обнаружение простоя с помощью клавиш мыши и клавиатуры

0 голосов
/ 21 августа 2008

Спасибо за ответы, я закончил с функцией GetLastInputInfo, так как это довольно просто реализовать в приложении, над которым я работаю.

...