This is a mirror of official site: http://jasper-net.blogspot.com/

Определяем время простоя пользователя

| Tuesday, September 21, 2010
Многие программные продукты должны уметь определять, когда пользователь не работает с компьютером. Это нужно для совершенно разных задач. Например, утилита, делающая резервную копию данных, отнимает много ресурсов. Лучше если она будет делать это тогда, когда пользователю эти ресурсы не нужны. Т.е. во время простоя системы. Skype ставит статус пользователя в «Away», если в течение длительного времени он не пользуется мышкой или клавиатурой. Это очень удобно, так как сами пользователи часто забывают сделать это. Таких примеров, на самом деле, можно привести великое множество. Очевидно здесь одно – определение простоя системы важная штука. И в любой момент может понадобиться программисту. Поэтому в этой статье мы попробуем разобраться, как определять «неактивность» пользователя в C#-приложении.
Логика нашего WinForms-приложения проста. У нас будет форма, в центре которой мы расположим Label с текстом «Unknown». Затем с помощью таймера через класс InactiveTimeRetriever мы будем узнавать, как долго пользователь не работает с системой. В случае если нам не удастся это узнать, мы будем выводить в Label значение «Unknown» и делать цвет формы желтым. Если пользователь не работал с системой более 5 секунд, мы будем менять текст в Label на «Inactive for [кол-во секунд]». Ну и текст формы сделаем в таком случае красным. Наконец, в том случае если система активна, надпись в Label станет «Active», а цвет формы зеленым.

[StructLayout(LayoutKind.Sequential)]
public struct LASTINPUTINFO
{

public uint cbSize;
public uint dwTime;
}

Данная структура будет использована нами далее в функции GetLastInputInfo, которая будет получать время, когда пользователь последний раз работал с системой. В нашем классе далее объявим следующее:

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

Read more: Microsoft Geeks

Posted via email from .NET Info

0 comments: