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

StackOverflow https://stackoverflow.com/questions/19185

Вопрос

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

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

Это было полезно?

Решение

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

using System.Runtime.InteropServices;

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

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

Другие советы

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

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

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

Видишь Определение времени простоя с помощью кнопок мыши и клавиатуры

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top