Есть ли способ проверить, находится ли пользователь в данный момент в режиме ожидания?
-
09-06-2019 - |
Вопрос
В Интернете есть некоторая документация, которая показывает, что 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, поскольку ее довольно просто реализовать в приложении, над которым я работаю.