public static int StartCore() { IZoneRenderer.ActiveZoneColor = Color.FromArgb(Int32.Parse(DropZone.Settings.ActiveColor.TrimStart('#'), System.Globalization.NumberStyles.HexNumber)); // IZoneRenderer.BackgroundOpacity = DropZone.Settings.BackgroundOpacity; IZoneRenderer.LabelColor = Color.FromArgb(Int32.Parse(DropZone.Settings.LabelColor.TrimStart('#'), System.Globalization.NumberStyles.HexNumber)); var dic = ScreenInfo.GetDisplays(); LayoutCollection = DropZone.Settings.Zones; renderer = new ZoneRenderer.GDI.GDIZone(LayoutCollection.ActiveLayout); var t = new SystemTray.TrayIcon(Process.GetCurrentProcess().Handle, "Exit Drop Zone", GetDropZoneIcon().GetHicon()); t.Events[SystemTray.TrayIcon.MouseMessages.WM_LBUTTONDOWN] += (s, e) => { System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location, "management"); }; t.Events[SystemTray.TrayIcon.MouseMessages.WM_LBUTTONDBLCLK] += (s, e) => { System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location, "management"); }; if (!Environment.GetCommandLineArgs().Any(x => x == "Silent")) { t.PostInfo("DropZone Running", "DropZone will run in the background, click the system try icon to close the process"); } #if DEBUG ShowConsole(); #else HideConsole(); #endif RegisterInputHooks(); return(MessagePump.Pump.Start((str, ex) => { t.PostInfo("DropZone Error", str); })); }
private static void SetPictureBoxIcon(PictureBox pictureBox, SystemTray.TrayIcon trayIcon) { try { var bitmap = Bitmap.FromHicon(trayIcon.iconHandle); pictureBox.Image = new Bitmap(bitmap, SystemAndProcessInformation.smallIconSize); } catch { trayIcon.iconHandle = Properties.Resources.Icon_missing.GetHicon(); pictureBox.Image = new Bitmap(Properties.Resources.Icon_missing, SystemAndProcessInformation.smallIconSize); } }
private static PictureBox CreatePictureBox(SystemTray.TrayIcon trayIcon) { var pictureBox = new PictureBox { SizeMode = PictureBoxSizeMode.CenterImage }; SetPictureBoxIcon(pictureBox, trayIcon); pictureBox.MouseDoubleClick += (_, e) => OnMouseEvent(trayIcon, e, NativeMethods.WM_LBUTTONDBLCLK, NativeMethods.WM_RBUTTONDBLCLK); pictureBox.MouseDown += (_, e) => OnMouseEvent(trayIcon, e, NativeMethods.WM_LBUTTONDOWN, NativeMethods.WM_RBUTTONDOWN); pictureBox.MouseUp += (_, e) => OnMouseEvent(trayIcon, e, NativeMethods.WM_LBUTTONUP, NativeMethods.WM_RBUTTONUP); return(pictureBox); }
private static void OnMouseEvent(SystemTray.TrayIcon trayIcon, MouseEventArgs e, IntPtr leftButtonAction, IntPtr rightButtonAction) { switch (e.Button) { case MouseButtons.Left: NativeMethods.SendNotifyMessage(trayIcon.hWnd, trayIcon.callbackMessage, (UIntPtr)trayIcon.id, leftButtonAction); break; case MouseButtons.Right: NativeMethods.SendNotifyMessage(trayIcon.hWnd, trayIcon.callbackMessage, (UIntPtr)trayIcon.id, rightButtonAction); break; } }
private void OnIconAdded(NativeMethods.NOTIFYICONDATA iconData, Tuple <int, uint> tuple) { if (!icons.ContainsKey(tuple)) { var trayIcon = new SystemTray.TrayIcon { hWnd = (IntPtr)iconData.hWnd, id = iconData.uID }; var pictureBox = CreatePictureBox(trayIcon); var t = Tuple.Create(trayIcon, pictureBox, CreateToolTip(pictureBox, trayIcon.tooltip)); UpdateIconData(t, iconData); icons[tuple] = t; if (TrayIconVisible(trayIcon)) { RepositionControls(left, right); bar.DoWidgetControlsChanged(this, Enumerable.Empty <PictureBox>(), new[] { pictureBox }); } } }
private static bool TrayIconVisible(SystemTray.TrayIcon trayIcon) { return(!trayIcon.state.HasFlag(NativeMethods.NIS.NIS_HIDDEN)); }