private static void HandleMessage(object sender, WindowMessageEventArgs e) { // Handle WM_INPUT if (e.Message != 0x00FF) { return; } try { var data = RawInputData.FromHandle(e.LParam); // Game already registers and uses Mouse, so pass that back. if (data.Device.UsageAndPage == HidUsageAndPage.Mouse) { return; } // Mark the message as handled and return 0 for consumed. e.Result = IntPtr.Zero; ProcessInput(data); } catch (Exception ex) { Logging.Log($"Failed to process window message: {ex.Message}\n{ex.StackTrace}"); } }
private static IntPtr CustomWndProc(IntPtr hWnd, uint msgAsInt, IntPtr wParam, IntPtr lParam) { if (OnMessage != null) { var args = new WindowMessageEventArgs(msgAsInt, wParam, lParam); OnMessage(null, args); if (args.Result.HasValue) { return(args.Result.Value); } } return(sOriginalHandler(hWnd, msgAsInt, wParam, lParam)); }