Exemple #1
0
        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));
        }