C# 如何区分多个鼠标设备的mousemove输入?
我的笔记本电脑上有一个鼠标和一个触摸板。我想要一个mousemove的全局钩子,它不仅告诉我新的位置,还告诉我它来自哪里的物理设备。只将钩子订阅到touchpad将是一个更好的解决方案,因为我只对touchpad感兴趣。钩子必须在系统范围内工作(即使我的应用程序没有处于焦点) 我该怎么做 我不怕在我的C#/WPF应用程序中使用Pinvoke . 对于鼠标输入,您可以获得以下内容:C# 如何区分多个鼠标设备的mousemove输入?,c#,.net,wpf,pinvoke,C#,.net,Wpf,Pinvoke,我的笔记本电脑上有一个鼠标和一个触摸板。我想要一个mousemove的全局钩子,它不仅告诉我新的位置,还告诉我它来自哪里的物理设备。只将钩子订阅到touchpad将是一个更好的解决方案,因为我只对touchpad感兴趣。钩子必须在系统范围内工作(即使我的应用程序没有处于焦点) 我该怎么做 我不怕在我的C#/WPF应用程序中使用Pinvoke . 对于鼠标输入,您可以获得以下内容: [StructLayout(LayoutKind.Sequential)] internal struct RID
[StructLayout(LayoutKind.Sequential)]
internal struct RID_DEVICE_INFO_MOUSE
{
[MarshalAs(UnmanagedType.U4)]
public int dwId;
[MarshalAs(UnmanagedType.U4)]
public int dwNumberOfButtons;
[MarshalAs(UnmanagedType.U4)]
public int dwSampleRate;
[MarshalAs(UnmanagedType.U4)]
public int fHasHorizontalWheel;
}
关于设备:
StructLayout(LayoutKind.Sequential)]
internal struct RID_DEVICE_INFO_HID
{
[MarshalAs(UnmanagedType.U4)]
public int dwVendorId;
[MarshalAs(UnmanagedType.U4)]
public int dwProductId;
[MarshalAs(UnmanagedType.U4)]
public int dwVersionNumber;
[MarshalAs(UnmanagedType.U2)]
public ushort usUsagePage;
[MarshalAs(UnmanagedType.U2)]
public ushort usUsage;
}