2009-12-08 76 views
0

我希望我的应用程序能够在未检测到用户输入一段时间(如欢迎/指令层)时显示某些信息。无论如何要让应用程序注册任何形式的用户输入(键盘,mousedown/move等),而无需为每个事件编写处理程序?是否有可能在C#中捕获任何非特定的输入事件?

是否有一个通用的输入窗口消息在被解释为鼠标或键盘或其他设备之前被发送?我想要的行为类似于Windows从键盘或鼠标输入的屏幕保护程序/睡眠唤醒。

我想避免类似:

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

回答

2

GetLastInputInfo Function也可能是你在找什么。它检索最后输入事件的时间。

+0

谢谢,其实这就是我以后 – jeffora 2009-12-08 00:31:33

0

也许这篇文章对CodeProjecthelp你。这是关于使用WPF一段时间不活动后自动注销。

希望这会有所帮助。

+0

感谢我,有趣的阅​​读和有用的信息 - 比我更详细的方法比之后 – jeffora 2009-12-08 00:32:12

0

我不知道,如果这个工程在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); 
相关问题