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