public DefaultTaskbarWindowService(IAppSettings settings)
        {
            _hookInstance = this;

            Settings        = settings;
            ActivePlacement = settings.Placement;

            // install a win event hook to track taskbar resize/movement
            hookDelegate = new WinEventHook.WinEventDelegate(WinEventProc);
            var winHook = WinEventHook.SetHook(WinEventHook.EVENT_OBJECT_LOCATIONCHANGE, hookDelegate);

            Application.ApplicationExit += (s, e) =>
            {
                if (winHook != IntPtr.Zero)
                {
                    WinEventHook.RemoveHook(winHook);
                    winHook = IntPtr.Zero;

                    foreach (var f in GetWindows())
                    {
                        f.Close();
                        f.RestoreTaskbar();
                    }
                }
            };
        }
예제 #2
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // create a clock window for each secondary taskbar
            taskbars = TaskbarUtils.ListTaskbars().Where(x => !x.IsPrimary).ToList();

            if (taskbars.Count > 0)
            {
                // add a clock to each secondary taskbar
                var viewModel = new ViewModels.ClockViewModel();
                foreach (var taskbar in taskbars)
                {
                    var f = new ClockWindow(taskbar, viewModel);
                    f.Show();
                }

                // install a win event hook to track taskbar resize/movement
                var hook = WinEventHook.SetHook(WinEventHook.EVENT_OBJECT_LOCATIONCHANGE, WinEventProc);

                Application.ApplicationExit += (s, e) =>
                {
                    WinEventHook.RemoveHook(hook);
                };

                Application.Run();
            }
            else
            {
                MessageBox.Show("SecondaryTaskbarClock", "No secondary taskbars found. Application will terminate.");
            }
        }