BlisterUI.Input.WMHookInput.HookProc C# (CSharp) Метод

HookProc() статический приватный Метод

static private HookProc ( IntPtr hWnd, WM_EVENT msg, IntPtr wParam, IntPtr lParam ) : IntPtr
hWnd System.IntPtr
msg WM_EVENT
wParam System.IntPtr
lParam System.IntPtr
Результат System.IntPtr
        static IntPtr HookProc(IntPtr hWnd, WM_EVENT msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr returnCode = CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam);
            switch(msg) {
                case WM_EVENT.GETDLGCODE:
                    returnCode = (IntPtr)(returnCode.ToInt32() | DLGC_WANTALLKEYS);
                    break;
                case WM_EVENT.IME_SETCONTEXT:
                    if(wParam.ToInt32() == 1) { ImmAssociateContext(hWnd, hIMC); }
                    break;
                case WM_EVENT.INPUTLANGCHANGE:
                    ImmAssociateContext(hWnd, hIMC);
                    returnCode = (IntPtr)1;
                    break;

                // Key Events
                case WM_EVENT.KEY_DOWN:
                    KeyboardEventDispatcher.EventInput_KeyDown(null, (Keys)wParam);
                    break;
                case WM_EVENT.KEY_UP:
                    KeyboardEventDispatcher.EventInput_KeyUp(null, (Keys)wParam);
                    break;
                case WM_EVENT.KEY_CHAR:
                    KeyboardEventDispatcher.EventInput_CharEntered(null, (char)wParam, lParam.ToInt32());
                    break;

                // Mouse Events
                case WM_EVENT.MOUSE_MOVE:
                    if(OnMouseMotion != null)
                        OnMouseMotion(null, new MouseMotionEventArgs(lParam.ToInt64()));
                    break;
                case WM_EVENT.MOUSE_LBUTTONDOWN:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Left, ButtonState.Pressed));
                    break;
                case WM_EVENT.MOUSE_LBUTTONUP:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Left, ButtonState.Released));
                    break;
                case WM_EVENT.MOUSE_MBUTTONDOWN:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Middle, ButtonState.Pressed));
                    break;
                case WM_EVENT.MOUSE_MBUTTONUP:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Middle, ButtonState.Released));
                    break;
                case WM_EVENT.MOUSE_RBUTTONDOWN:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Right, ButtonState.Pressed));
                    break;
                case WM_EVENT.MOUSE_RBUTTONUP:
                    if(OnMouseButton != null)
                        OnMouseButton(null, new MouseButtonEventArgs(lParam.ToInt64(), MouseButton.Right, ButtonState.Released));
                    break;
                case WM_EVENT.MOUSE_WHEEL:
                    if(OnMouseWheel != null)
                        OnMouseWheel(null, new MouseWheelEventArgs(wParam.ToInt32()));
                    break;
            }
            return returnCode;
        }