是否可以在C#中捕获任何不特定的输入事件?
我希望我的应用程序能够在一段时间内没有检测到用户输入时显示某些信息(如欢迎/说明层)。应用程序是否可以注册任何形式的用户输入(键盘、鼠标向下/移动等),而不必为每个事件编写处理程序 在被解释为鼠标、键盘或其他设备之前,是否有一个通用的输入窗口消息被发送?我想要的行为类似于Windows从屏幕保护程序中醒来/在键盘或鼠标输入上睡眠 我想避免这样的事情:是否可以在C#中捕获任何不特定的输入事件?,c#,wpf,events,C#,Wpf,Events,我希望我的应用程序能够在一段时间内没有检测到用户输入时显示某些信息(如欢迎/说明层)。应用程序是否可以注册任何形式的用户输入(键盘、鼠标向下/移动等),而不必为每个事件编写处理程序 在被解释为鼠标、键盘或其他设备之前,是否有一个通用的输入窗口消息被发送?我想要的行为类似于Windows从屏幕保护程序中醒来/在键盘或鼠标输入上睡眠 我想避免这样的事情: void SomeHandler(object sender, EventArgs e) { WakeUp(); } ... this.KeyDo
void SomeHandler(object sender, EventArgs e) { WakeUp(); }
...
this.KeyDown += SomeHandler;
this.MouseMove += SomeHandler;
this.SomeInputInteraction += SomeHandler;
这可能就是你要找的。它检索最后一次输入事件的时间。也许这篇关于CodeProject的文章会让您满意。它是关于使用WPF在一段时间不活动后自动注销
希望这有帮助。我不知道这是否适用于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);
谢谢,这正是我正在追忆的东西,有趣的阅读和有用的信息——比我想要的更详细一点