private void StartLongAction(ClickAction clickAction)
        {
            switch (clickAction)
            {
            case ClickAction.LeftDrag:
            {
                isDragging = true;
                Point CursorPos = Cursor.Position;
                mouse_event(MOUSEEVENTF_LEFTDOWN, CursorPos.X, CursorPos.Y, 0, 0);

                if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogClickEvent"))
                {
                    CMSLogClickEvent clickEvent = new CMSLogClickEvent();
                    if (clickEvent != null)
                    {
                        Point c = Cursor.Position;
                        clickEvent.X      = c.X;
                        clickEvent.Y      = c.Y;
                        clickEvent.Width  = CMSConstants.SCREEN_WIDTH;
                        clickEvent.Height = CMSConstants.SCREEN_HEIGHT;
                        clickEvent.ClickType
                            = GetXmlClickType(clickAction, true);
                        CMSLogger.SendLogEvent(clickEvent);
                    }
                }
            }
            break;

            default:
            {
                return;
            }
            }
        }
        private void ClickThread()
        {
            while (!Quit)
            {
                if (ClickEvent)
                {
                    ClickEvent = false;

                    Point p = System.Windows.Forms.Cursor.Position;
                    User32.mouse_event(2, p.X, p.Y, 0, 0); //Right mouse down at x,y
                    System.Threading.Thread.Sleep(100);
                    User32.mouse_event(4, p.X, p.Y, 0, 0); //Right mouse up at x,y

                    if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogClickEvent"))
                    {
                        CMSLogClickEvent clickEvent = new CMSLogClickEvent();
                        if (clickEvent != null)
                        {
                            clickEvent.X         = p.X;
                            clickEvent.Y         = p.Y;
                            clickEvent.Width     = CMSConstants.SCREEN_WIDTH;
                            clickEvent.Height    = CMSConstants.SCREEN_HEIGHT;
                            clickEvent.ClickType = ClickType.LClk;
                            CMSLogger.SendLogEvent(clickEvent);
                        }
                    }
                }

                System.Threading.Thread.Sleep(100);
            }
        }
        private void PerformShortAction(ClickAction clickAction)
        {
            Point CursorPos = Cursor.Position;

            switch (clickAction)
            {
            case ClickAction.DoubleClick:
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, CursorPos.X, CursorPos.Y, 0, 0);
                Thread.Sleep(10);
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, CursorPos.X, CursorPos.Y, 0, 0);
            }
            break;

            case ClickAction.LeftClick:
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, CursorPos.X, CursorPos.Y, 0, 0);
            }
            break;

            case ClickAction.RightClick:
            {
                mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, CursorPos.X, CursorPos.Y, 0, 0);
            }
            break;

            default:
            {
                return;
            }
            }

            if (CMSLogger.CanCreateLogEvent(false, false, false, "CMSLogClickEvent"))
            {
                CMSLogClickEvent clickEvent = new CMSLogClickEvent();
                if (clickEvent != null)
                {
                    Point c = Cursor.Position;
                    clickEvent.X      = c.X;
                    clickEvent.Y      = c.Y;
                    clickEvent.Width  = CMSConstants.SCREEN_WIDTH;
                    clickEvent.Height = CMSConstants.SCREEN_HEIGHT;
                    clickEvent.ClickType
                        = GetXmlClickType(clickAction, false);
                    CMSLogger.SendLogEvent(clickEvent);
                }
            }
        }