Beispiel #1
0
        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));
 }