Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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()}");
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }