/// <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))); }
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); }