【发布时间】:2012-05-31 15:22:51
【问题描述】:
如果鼠标光标到达屏幕一角,我目前正在使用全局鼠标钩子使应用程序出现。我刚刚读到了原始输入的存在,据我了解,这是一种更强大的方法,因为我的钩子减速不会影响整个系统。
问题是我在任何地方都找不到任何关于在 WPF 中使用原始输入的示例。
我得到的最接近的是 SlimDX,代码如下:
Device.RegisterDevice(UsagePage.Generic, UsageId.Mouse,
DeviceFlags.None);
Device.MouseInput += new EventHandler<MouseInputEventArgs>(mouse_MouseInput);
但这似乎在 WPF 中不起作用,只有 winforms。
【问题讨论】:
-
基本上您需要使用 DllImport 来访问 GetRawInputData 函数并处理 WM_INPUT 消息。这是一个提供良好基础的 CodeProject 链接:codeproject.com/Articles/17123/…。创建此代码项目是为了允许使用多个键盘,但如果您密切注意,您会发现它们在某种程度上也支持鼠标。这不是一个完整的答案,但它是一个好的开始。
-
谢谢乔希。通过一些工作,我设法在 WPF 应用程序中获取事件,只是发现坐标始终是相对的。不要认为我可以使这项工作适合我的使用。即使我把增量加起来,它们也会偏离现实,因为当光标碰到屏幕边缘时我仍然会得到增量!
标签: wpf mouse slimdx raw-input