public static IUserAction ConvertToMouseDownAction(MouseEventArgs e)
        {
            var location = new Location((uint)e.X, (uint)e.Y);

            switch (e.Button)
            {
                case MouseButtons.Left:
                     return new LeftMouseDownAction(location);
                case MouseButtons.Right:
                    return new RightMouseDownAction(location);
                case MouseButtons.Middle:
                    return new MiddleMouseDownAction(location);
                default:
                    throw new ArgumentException("MouseEventArgs");
            }
        }
 public MiddleMouseDownAction(Location location)
     : base(location)
 {
 }
 public RightMouseDownAction(Location location)
     : base(location)
 {
 }
 protected MouseDownAction(Location location)
 {
     Location = location;
     Metadata = GetMetadata();
 }
 public static void RightUp(Location location)
 {
     mouse_event(MouseEventfRightUp, location.X, location.Y, 0, 0);
 }
 public static void MiddleUp(Location location)
 {
     mouse_event(MouseEventfMiddleUp, location.X, location.Y, 0, 0);
 }
 public static void LeftDown(Location location)
 {
     mouse_event(MouseEventfLeftDown, location.X, location.Y, 0, 0);
 }