예제 #1
0
        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);
        }
예제 #2
0
 static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, WM_EVENT Msg, IntPtr wParam, IntPtr lParam);
예제 #3
0
 static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, WM_EVENT Msg, IntPtr wParam, IntPtr lParam);
예제 #4
0
        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;
        }