RawInput Sharp 项目教程
rawinput-sharpC# wrapper library for Raw Input项目地址:https://gitcode.com/gh_mirrors/ra/rawinput-sharp
项目介绍
RawInput Sharp 是一个用于 Windows Raw Input 的 C# 包装库。它允许开发者接收硬件设备的裸数据,从而实现高性能的全局键盘和多个鼠标支持。该项目支持 .NET Standard 1.1、.NET Framework 4.6.1 和 .NET 7.0。
项目快速启动
安装
通过 NuGet 安装 RawInput Sharp:
dotnet add package RawInputSharp --version 0.1.3
示例代码
在 MainWindow 中注册事件:
public MainWindow()
{
InitializeComponent();
SourceInitialized += MainWindow_SourceInitialized;
}
private void MainWindow_SourceInitialized(object sender, EventArgs e)
{
var windowInteropHelper = new WindowInteropHelper(this);
var hwnd = windowInteropHelper.Handle;
// 获取可以处理的设备
var devices = RawInputDevice.GetDevices();
// 注册设备
RawInputDevice.RegisterDevice(HidUsagePage.Generic, HidUsage.Keyboard, RawInputDeviceFlags.ExInputSink, hwnd);
RawInputDevice.RegisterDevice(HidUsagePage.Generic, HidUsage.Mouse, RawInputDeviceFlags.ExInputSink, hwnd);
}
protected override void WndProc(ref Message m)
{
const int WM_INPUT = 0x00FF;
if (m.Msg == WM_INPUT)
{
var data = RawInputData.FromHandle(m.LParam);
switch (data)
{
case RawInputMouseData mouse:
Console.WriteLine(mouse.Mouse);
break;
case RawInputKeyboardData keyboard:
Console.WriteLine(keyboard.Keyboard);
break;
case RawInputHidData hid:
Console.WriteLine(hid.Hid);
break;
}
}
base.WndProc(ref m);
}
应用案例和最佳实践
应用案例
- 全局键盘钩子:使用 RawInput Sharp 可以实现全局键盘钩子,捕获所有键盘输入,适用于游戏或自动化工具。
- 多鼠标支持:在需要多个鼠标输入的应用中,如演示软件或交互式白板,RawInput Sharp 可以轻松处理多个鼠标设备。
最佳实践
- 性能优化:由于 RawInput 会接收到大量消息,建议在处理输入时进行性能优化,如使用缓冲区或异步处理。
- 错误处理:在解析裸数据时,应考虑错误处理,确保应用在遇到异常输入时仍能稳定运行。
典型生态项目
- WPF 应用:RawInput Sharp 可以与 WPF 应用集成,提供高性能的输入处理。
- 游戏开发:在游戏开发中,RawInput Sharp 可以用于实现低延迟的输入响应。
- 自动化工具:自动化工具可以通过 RawInput Sharp 捕获和模拟键盘鼠标输入。
通过以上内容,您可以快速了解和使用 RawInput Sharp 项目,并根据实际需求进行扩展和优化。
rawinput-sharpC# wrapper library for Raw Input项目地址:https://gitcode.com/gh_mirrors/ra/rawinput-sharp