private static IntPtr Callback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && wParam == (IntPtr)NativeMethods.WH_KEYDOWN)
            {
                if (OnGlobalKeyDown != null)
                {
                    var keyCode = Marshal.ReadInt32(lParam);
                    OnGlobalKeyDown.Invoke(keyCode);
                }
            }

            return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
Exemple #2
0
        private void ProcFunction()
        {
            while (true)
            {
                try
                {
                    var starttime = DateTime.Now;

                    //Get values
                    point  = Owner.GetMCursorPositionConsole();
                    pointg = Owner.GetMCursorPositionScreen();
                    mb     = Owner.GetMouseButtonScreen();
                    mbg    = Owner.GetMouseButtonScreen();
                    s      = Owner.GetWindowSize();
                    for (var i = 0; i < 255; i++)
                    {
                        keysg[i] = Owner.GetKeyState(i);
                    }

                    //OnResize
                    if (s.Width != olds.Width || s.Height != olds.Height)
                    {
                        OnResize?.Invoke(s);
                    }

                    //OnMouseMove
                    //if (point.X != oldpoint.X || point.Y != oldpoint.Y)
                    //    OnMouseMove?.Invoke(point.X, point.Y, pointg.X, pointg.Y, mb);

                    //OnGlobalMouseMove
                    //if (pointg.X != oldpointg.X || pointg.Y != oldpointg.Y)
                    //    OnGlobalMouseMove?.Invoke(pointg.X, pointg.Y, mbg);

                    //OnGlobalKey*
                    for (var i = 0; i < 255; i++)
                    {
                        if (keysg[i] != oldkeysg[i])
                        {
                            if (keysg[i] == 0)
                            {
                                OnGlobalKeyUp?.Invoke(i, keysg);
                            }
                            else
                            {
                                OnGlobalKeyDown?.Invoke(i, keysg);
                            }
                            break;
                        }
                    }

                    //OnMouse*
                    //if (mb != oldmb)
                    //    if (mb == MButton.Null)
                    //        OnMouseUp?.Invoke(point.X, point.Y, pointg.X, pointg.Y, point.X != new Point().X && point.Y != new Point().Y, oldmb);
                    //    else if (mb != MButton.Null)
                    //        OnMouseDown?.Invoke(point.X, point.Y, pointg.X, pointg.Y, point.X != new Point().X && point.Y != new Point().Y, mb);

                    //OnKeyDown
                    if (Console.KeyAvailable)
                    {
                        key = Console.ReadKey().KeyChar;
                        OnKeyDown?.Invoke(key);
                    }

                    //Save old values
                    olds = s;
                    keysg.CopyTo(oldkeysg, 0);
                    oldkey    = key;
                    oldmb     = mb;
                    oldpoint  = point;
                    oldpointg = pointg;

                    //OnEventHandlerTimerElapsed
                    OnEventHandlerTimerElapsed?.Invoke((DateTime.Now - starttime).TotalMilliseconds);
                }
                catch (Exception ex)
                {
                    CallException(ex);
                }

                Thread.Sleep(CyclicCheckingEventsInterval);
            }
        }