Ejemplo n.º 1
0
        /// <summary>
        ///     Synthesizes a left mouse button click to the active window.
        /// </summary>
        /// <param name="directInput">
        /// </param>
        public static void SendMouseClick(bool directInput = true)
        {
            if (!directInput)
            {
                var hWnd = WinApi.NativeMethods.GetForegroundWindow();
                SendKeyState(hWnd, VirtualKey.LButton, VirtualKeyState.KeyDown, true);
                SendKeyState(hWnd, VirtualKey.LButton, VirtualKeyState.KeyUp, true);
                return;
            }

            var mouseDown = new WinApi.DeviceInput();

            mouseDown.Data.Mouse.Flags = 0x2;
            mouseDown.Type             = 0;

            var mouseUp = new WinApi.DeviceInput();

            mouseUp.Data.Mouse.Flags = 0x4;
            mouseUp.Type             = 0;

            var inputs = new[]
            {
                mouseDown,
                mouseUp
            };

            _ = WinApi.NativeMethods.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(WinApi.DeviceInput)));
        }
Ejemplo n.º 2
0
        private void MenuViewForm_Load(object sender, EventArgs e)
        {
            BackColor = Color.FromArgb(byte.MaxValue, Main.Colors.Base.R, Main.Colors.Base.G, Main.Colors.Base.B);
            if (Main.ScreenDpi > 96)
            {
                Font = SystemFonts.CaptionFont;
            }
            Icon        = Resources.PortableApps_blue;
            MaximumSize = Screen.FromHandle(Handle).WorkingArea.Size;
            Lang.SetControlLang(this);
            for (var i = 0; i < appMenu.Items.Count; i++)
            {
                appMenu.Items[i].Text = Lang.GetText(appMenu.Items[i].Name);
            }
            if (Main.SetFont(this))
            {
                layoutPanel.Size = new Size(Width - 2, Height - 2);
            }
            Main.SetFont(appMenu);

            layoutPanel.BackgroundImage       = Main.BackgroundImage;
            layoutPanel.BackgroundImageLayout = Main.BackgroundImageLayout;
            layoutPanel.BackColor             = Main.Colors.Base;
            layoutPanel.SetControlStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer);
            ControlEx.DrawSizeGrip(layoutPanel, Main.Colors.Base,
                                   (o, args) =>
            {
                Point point;
                switch (TaskBar.GetLocation(Handle))
                {
                case TaskBar.Location.Right:
                    point = new Point(1, Height - 1);
                    break;

                case TaskBar.Location.Bottom:
                    point = new Point(Width - 1, 1);
                    break;

                default:
                    point = new Point(Width - 1, Height - 1);
                    break;
                }
                WinApi.NativeHelper.ClientToScreen(Handle, ref point);
                WinApi.NativeHelper.SetCursorPos((uint)point.X, (uint)point.Y);
                var inputMouseDown = new WinApi.DeviceInput();
                inputMouseDown.Data.Mouse.Flags = 0x2;
                inputMouseDown.Type             = 0;
                var inputMouseUp = new WinApi.DeviceInput();
                inputMouseUp.Data.Mouse.Flags = 0x4;
                inputMouseUp.Type             = 0;
                WinApi.DeviceInput[] inputs   =
                {
                    inputMouseUp,
                    inputMouseDown
                };
                WinApi.NativeHelper.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(WinApi.DeviceInput)));
            },
                                   (o, args) =>
            {
                var p = o as PictureBox;
                if (p == null)
                {
                    return;
                }
                switch (TaskBar.GetLocation(Handle))
                {
                case TaskBar.Location.Right:
                case TaskBar.Location.Bottom:
                    p.Cursor = Cursors.SizeNESW;
                    break;

                default:
                    p.Cursor = Cursors.SizeNWSE;
                    break;
                }
            });

            _hideHScrollBar = Ini.Read("Settings", "Window.HideHScrollBar", false);
            if (Main.ScreenDpi > 96)
            {
                appsListViewPanel.Font = SystemFonts.SmallCaptionFont;
            }
            appsListViewPanel.BackColor = Main.Colors.Control;
            appsListViewPanel.ForeColor = Main.Colors.ControlText;
            appsListView.BackColor      = appsListViewPanel.BackColor;
            appsListView.ForeColor      = appsListViewPanel.ForeColor;
            appsListView.SetDoubleBuffer();
            appsListView.SetMouseOverCursor();

            searchBox.BackColor = Main.Colors.Control;
            searchBox.ForeColor = Main.Colors.ControlText;
            searchBox.DrawSearchSymbol(Main.Colors.ControlText);
            SearchBox_Leave(searchBox, EventArgs.Empty);

            title.ForeColor     = Main.BackgroundImage.GetAverageColor().InvertRgb().ToGrayScale();
            logoBox.Image       = Resources.PortableApps_Logo_gray.Redraw(logoBox.Height, logoBox.Height);
            appsCount.ForeColor = title.ForeColor;

            aboutBtn.BackgroundImage = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.Help, Main.SystemResourcePath)?.ToBitmap();
            aboutBtn.BackgroundImage = aboutBtn.BackgroundImage.SwitchGrayScale($"{aboutBtn.Name}BackgroundImage");

            profileBtn.BackgroundImage = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.UserDir, true, Main.SystemResourcePath)?.ToBitmap();
            downloadBtn.Image          = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.Network, Main.SystemResourcePath)?.ToBitmap();
            settingsBtn.Image          = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.SystemControl, Main.SystemResourcePath)?.ToBitmap();
            foreach (var btn in new[] { downloadBtn, settingsBtn })
            {
                btn.BackColor = Main.Colors.Button;
                btn.ForeColor = Main.Colors.ButtonText;
                btn.FlatAppearance.MouseDownBackColor = Main.Colors.Button;
                btn.FlatAppearance.MouseOverBackColor = Main.Colors.ButtonHover;
            }

            appMenuItem2.Image = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.Uac, Main.SystemResourcePath)?.ToBitmap();
            appMenuItem3.Image = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.Directory, Main.SystemResourcePath)?.ToBitmap();
            appMenuItem5.Image = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.Pin, Main.SystemResourcePath)?.ToBitmap();
            appMenuItem7.Image = ResourcesEx.GetSystemIcon(ResourcesEx.IconIndex.RecycleBinEmpty, Main.SystemResourcePath)?.ToBitmap();
            appMenu.CloseOnMouseLeave(32);
            appMenu.EnableAnimation();
            appMenu.SetFixedSingle();

            var docDir = PathEx.Combine(PathEx.LocalDir, "Documents");

            if (Directory.Exists(docDir) && Data.DirIsLink(docDir) && !Data.MatchAttributes(docDir, FileAttributes.Hidden))
            {
                Data.SetAttributes(docDir, FileAttributes.Hidden);
            }

            _windowOpacity = Ini.Read("Settings", "Window.Opacity", 95d);
            if (_windowOpacity.IsBetween(20d, 100d))
            {
                _windowOpacity /= 100d;
            }
            else
            {
                _windowOpacity = .95d;
            }

            var windowFadeInEffect = Ini.Read("Settings", "Window.FadeInEffect", 0);

            _windowFadeInDuration = Ini.Read("Settings", "Window.FadeInDuration", 100);
            if (_windowFadeInDuration < 25)
            {
                _windowFadeInDuration = 25;
            }
            if (_windowFadeInDuration > 750)
            {
                _windowFadeInDuration = 750;
            }

            var windowWidth = Ini.Read("Settings", "Window.Size.Width", MinimumSize.Width);

            if (windowWidth > MinimumSize.Width && windowWidth < MaximumSize.Width)
            {
                Width = windowWidth;
            }
            if (windowWidth > MaximumSize.Width)
            {
                Width = MaximumSize.Width;
            }

            var windowHeight = Ini.Read("Settings", "Window.Size.Height", MinimumSize.Height);

            if (windowHeight > MinimumSize.Height && windowHeight < MaximumSize.Height)
            {
                Height = windowHeight;
            }
            if (windowHeight > MaximumSize.Height)
            {
                Height = MaximumSize.Height;
            }

            MenuViewForm_Update();

            var windowAnimation = windowFadeInEffect == 0 ? WinApi.AnimateWindowFlags.Blend : WinApi.AnimateWindowFlags.Slide;

            switch (windowAnimation)
            {
            case WinApi.AnimateWindowFlags.Blend:
                return;

            case WinApi.AnimateWindowFlags.Slide:
                var windowPosition = Ini.Read("Settings", "Window.DefaultPosition", 0);
                if (windowPosition == 1)
                {
                    windowAnimation = WinApi.AnimateWindowFlags.Center;
                    break;
                }
                switch (TaskBar.GetLocation(Handle))
                {
                case TaskBar.Location.Left:
                    windowAnimation |= WinApi.AnimateWindowFlags.HorPositive;
                    break;

                case TaskBar.Location.Top:
                    windowAnimation |= WinApi.AnimateWindowFlags.VerPositive;
                    break;

                case TaskBar.Location.Right:
                    windowAnimation |= WinApi.AnimateWindowFlags.HorNegative;
                    break;

                case TaskBar.Location.Bottom:
                    windowAnimation |= WinApi.AnimateWindowFlags.VerNegative;
                    break;

                default:
                    windowAnimation = WinApi.AnimateWindowFlags.Center;
                    break;
                }
                break;
            }
            Opacity = _windowOpacity;
            WinApi.NativeHelper.AnimateWindow(Handle, _windowFadeInDuration, windowAnimation);
        }