在我的 WPF 应用程序中,我必须检测系统空闲时间(包括不使用鼠标、键盘、操纵杆)。
我曾经GetLastInputInfo
得到系统的空闲时间,但我发现它只适用于鼠标或键盘的输入,而不是来自操纵杆的输入。
有没有一种方法或任何 Win32 API 可以通过检测来自所有三种设备(鼠标、键盘、操纵杆)的输入来提供 LastInputInfo?
您可以注册以接收 RAW Input 消息。下面的示例要求来自操纵杆的原始输入,但如果需要,您也可以要求来自鼠标和键盘的原始输入......或者您可以坚持使用 GetLastInputInfo 来处理这些情况。
如果您想在应用程序不在前台时接收事件,请在 dwFlags 上使用 RIDEV_INPUTSINK。
下面的链接中应该有足够的内容来做你想做的事情......从每个参考资料中获取点点滴滴。
http://www.codeproject.com/Articles/185522/Using-the-Raw-Input-API-to-Process-Joystick-Input
http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard
http://msdn.microsoft.com/en-us/library/ms645600(v=vs.85).aspx
然后您需要定义一个回调来接收 Windows 消息,然后查找任何 WM_INPUT 。
我认为您不必使用系统挂钩,但这里有一个链接提到: