Можно ли захватить любое неопределенное входное событие в C #? - PullRequest
0 голосов
/ 08 декабря 2009

Я хочу, чтобы мое приложение могло отображать определенную информацию, если в течение некоторого времени пользовательский ввод не обнаруживался (например, слой приветствия / инструкция). Есть ли в любом случае приложение для регистрации любой формы ввода данных пользователем (клавиатура, mousedown / move и т. Д.) Без необходимости писать обработчики для каждого из этих событий?

Есть ли общее окно ввода сообщения, которое отправляется до того, как оно будет интерпретировано как мышь, клавиатура или другое устройство? Мне нужно поведение, похожее на то, как Windows просыпается от заставки / сна на клавиатуре или мыши.

Я хочу избежать чего-то вроде:

void SomeHandler(object sender, EventArgs e) { WakeUp(); }
...
this.KeyDown += SomeHandler;
this.MouseMove += SomeHandler;
this.SomeInputInteraction += SomeHandler;

Ответы [ 3 ]

2 голосов
/ 08 декабря 2009

Функция GetLastInputInfo , вероятно, то, что вы ищете. Получает время последнего входного события.

0 голосов
/ 08 декабря 2009

Я не знаю, работает ли это в WPF, но это может помочь:

public class DetectInput : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {

        if (   m.Msg == (int)WindowsMessages.WM_KEYDOWN 
            || m.Msg == (int)WindowsMessages.WM_MOUSEDOWN  
            // add more input types if you want
            )
        {
            // Do your stuff here
        }

        return false;
    }
}

и в программе:

Application.AddMessageFilter(new DetectInput ()); // Must come before Run
Application.Run(YourForm);
0 голосов
/ 08 декабря 2009

Возможно, эта статья о CodeProject поможет помочь вам. Речь идет об автоматическом выходе из системы после определенного периода бездействия с использованием WPF.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...