private static bool RegisterRawInputDevices(User32.RAWINPUTDEVICE data) { var devicePtr = Marshal.AllocHGlobal(Marshal.SizeOf(data)); Marshal.StructureToPtr(data, devicePtr, false); bool ret = User32.RegisterRawInputDevices(devicePtr, 1, (uint)Marshal.SizeOf(data)); Marshal.FreeHGlobal(devicePtr); return(ret); }
public static void UnregisterForMouseInput() { var data = new User32.RAWINPUTDEVICE { usUsagePage = User32.HidUsagePage.GENERIC, usUsage = User32.HidUsage.Mouse, dwFlags = User32.RIDEV_REMOVE }; if (!RegisterRawInputDevices(data)) { Trace.WriteLine($"InputHelper UnregisterForMouseInput: {Marshal.GetLastWin32Error()}"); } }
void InitializeRawInput() { _listenerHwnd = new WindowInteropHelper(_listenerWindow).Handle; User32.RAWINPUTDEVICE[] rawInputDevice = new User32.RAWINPUTDEVICE[1]; rawInputDevice[0].UsagePage = User32.UsagePageGenericDesktop; rawInputDevice[0].Usage = User32.UsageMouse; rawInputDevice[0].Flags = User32.RawInputDeviceFlags.InputSink; rawInputDevice[0].WindowHandle = _listenerHwnd; bool success; success = User32.RegisterRawInputDevices(rawInputDevice, 1, Marshal.SizeOf(typeof(User32.RAWINPUTDEVICE))); _hwndSource = HwndSource.FromHwnd(_listenerHwnd); _wndprocHook = new HwndSourceHook(WndProc); _hwndSource.AddHook(_wndprocHook); }
private void RegisterForRawMouseInput(uint flags) { User32.RAWINPUTDEVICE mouseRawDevice = new User32.RAWINPUTDEVICE(); mouseRawDevice.usUsagePage = (ushort)User32.HidUsagePage.GENERIC; mouseRawDevice.usUsage = (ushort)User32.HidUsage.Mouse; mouseRawDevice.dwFlags = flags; mouseRawDevice.hwndTarget = (flags == User32.RIDEV_REMOVE ? IntPtr.Zero : _hwnd); var devicePtr = Marshal.AllocHGlobal(Marshal.SizeOf(mouseRawDevice)); Marshal.StructureToPtr(mouseRawDevice, devicePtr, false); if (User32.RegisterRawInputDevices(devicePtr, 1, (uint)Marshal.SizeOf(mouseRawDevice)) == false) { Trace.WriteLine($"Couldn't register for raw input: {flags} {Marshal.GetLastWin32Error()} {_hwnd}"); } Marshal.FreeHGlobal(devicePtr); }