コード例 #1
0
 /// <summary>
 /// Rise on change of Main Window state
 /// </summary>
 /// <param name="sender">The main Window</param>
 /// <param name="e">The args</param>
 private void Win_StateChanged(Object sender, EventArgs e)
 {
     if ((sender as Window)?.WindowState != WindowState.Minimized)
     {
         ((Window)sender).Visibility = Visibility.Visible;
         CombinedWindowActivator windowsActivate = new CombinedWindowActivator();
         windowsActivate.ActivateForm(sender as Window, null, IntPtr.Zero);
     }
 }
コード例 #2
0
 private void Win_StateChanged(object sender, EventArgs e)
 {
     if ((sender as Window).WindowState != WindowState.Minimized)
     {
         (sender as Window).Visibility = Visibility.Visible;
         CombinedWindowActivator windowsActivate = new CombinedWindowActivator();
         windowsActivate.ActivateForm(sender as Window, null, IntPtr.Zero);
         //User32.ForceForegroundWindow(sender as Window);
     }
 }
コード例 #3
0
        /// <summary>
        /// Single instance callback handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="SingleInstanceApplication.InstanceCallbackEventArgs"/> instance containing the event data.</param>
        private void SingleInstanceCallback(Object sender, InstanceCallbackEventArgs args)
        {
            if (args == null || this.Dispatcher == null)
            {
                return;
            }

            var startUpLocation = Settings.BESettings.StartupLocation;

            Action <Boolean> d = x => {
                var win             = this.MainWindow as MainWindow;
                var windowsActivate = new CombinedWindowActivator();
                if (!x || win == null)
                {
                    return;
                }

                win.StateChanged += this.Win_StateChanged;
                if (args.CommandLineArgs == null || !args.CommandLineArgs.Any())
                {
                    return;
                }

                if (args.CommandLineArgs.Length == 1)
                {
                    win.Visibility = Visibility.Visible;
                    windowsActivate.ActivateForm(win, null, IntPtr.Zero);
                }
                else
                {
                    if (args.CommandLineArgs[1] == "/nw")
                    {
                        new MainWindow()
                        {
                            IsMultipleWindowsOpened = true
                        }.Show();
                    }
                    else
                    {
                        IListItemEx sho;
                        if (args.CommandLineArgs[1] == "t")
                        {
                            win.Visibility = Visibility.Visible;
                            windowsActivate.ActivateForm(win, null, IntPtr.Zero);

                            sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, startUpLocation.ToShellParsingName());
                        }
                        else
                        {
                            sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, args.CommandLineArgs[1].ToShellParsingName());
                        }

                        if (!IsStartMinimized || win.tcMain.Items.Count == 0)
                        {
                            this.CreateInitialTab(win, sho);
                        }
                        else if (Settings.BESettings.IsRestoreTabs)
                        {
                            win.tcMain.Items.Clear();
                            this.CreateInitialTab(win, sho);
                        }
                        else if (args.CommandLineArgs.Length > 1 && args.CommandLineArgs[1] != null)
                        {
                            if (args.CommandLineArgs[1] == "t")
                            {
                                this.CreateInitialTab(win, sho);
                            }
                            else
                            {
                                var cmd = args.CommandLineArgs[1];
                                sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, cmd.ToShellParsingName());
                                this.CreateInitialTab(win, sho);
                            }
                        }
                        else
                        {
                            this.CreateInitialTab(win, sho);
                        }
                    }

                    windowsActivate.ActivateForm(win, null, IntPtr.Zero);
                }
            };

            this.Dispatcher.BeginInvoke(d, true);
        }
コード例 #4
0
        /// <summary>
        /// Single instance callback handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="SingleInstanceApplication.InstanceCallbackEventArgs"/> instance containing the event data.</param>
        ///
        private void SingleInstanceCallback(Object sender, InstanceCallbackEventArgs args)
        {
            if (args == null || Dispatcher == null)
            {
                return;
            }
            var startUpLocation = Utilities.GetRegistryValue("StartUpLoc", KnownFolders.Libraries.ParsingName).ToString();

            Action <Boolean> d = x => {
                var win             = MainWindow as MainWindow;
                var windowsActivate = new CombinedWindowActivator();
                if (!x)
                {
                    return;
                }
                if (win == null)
                {
                    return;
                }
                win.StateChanged += Win_StateChanged;
                if (args?.CommandLineArgs == null || !args.CommandLineArgs.Any())
                {
                    return;
                }
                if (args.CommandLineArgs.Length == 1)
                {
                    win.Visibility = Visibility.Visible;
                    //if (win.WindowState == WindowState.Minimized) {
                    //	User32.ShowWindow((PresentationSource.FromVisual(win) as HwndSource).Handle, User32.ShowWindowCommands.Restore);
                    //}
                    //User32.ForceForegroundWindow(win);
                    windowsActivate.ActivateForm(win, null, IntPtr.Zero);
                }
                else
                {
                    if (args.CommandLineArgs[1] == "/nw")
                    {
                        new MainWindow()
                        {
                            IsMultipleWindowsOpened = true
                        }.Show();
                    }
                    else
                    {
                        IListItemEx sho = null;
                        if (args.CommandLineArgs[1] == "t")
                        {
                            win.Visibility = Visibility.Visible;
                            //if (win.WindowState == WindowState.Minimized)
                            //	User32.ShowWindow((PresentationSource.FromVisual(win) as HwndSource).Handle,
                            //		User32.ShowWindowCommands.Restore);
                            windowsActivate.ActivateForm(win, null, IntPtr.Zero);

                            sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, startUpLocation.ToShellParsingName());
                        }
                        else
                        {
                            sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, args.CommandLineArgs[1].ToShellParsingName());
                        }

                        if (!IsStartMinimized || win.tcMain.Items.Count == 0)
                        {
                            CreateInitialTab(win, sho);
                        }
                        else if ((Int32)Utilities.GetRegistryValue("IsRestoreTabs", "1") == 0)
                        {
                            win.tcMain.Items.Clear();
                            CreateInitialTab(win, sho);
                        }
                        else if (args.CommandLineArgs.Length > 1 && args.CommandLineArgs[1] != null)
                        {
                            if (args.CommandLineArgs[1] == "t")
                            {
                                CreateInitialTab(win, sho);
                            }
                            else
                            {
                                var cmd = args.CommandLineArgs[1];
                                sho = FileSystemListItem.ToFileSystemItem(IntPtr.Zero, cmd.ToShellParsingName());
                                CreateInitialTab(win, sho);
                            }
                        }
                        else
                        {
                            CreateInitialTab(win, sho);
                        }
                    }
                    //User32.ForceForegroundWindow(win);

                    windowsActivate.ActivateForm(win, null, IntPtr.Zero);
                }
            };

            Dispatcher.BeginInvoke(d, true);
        }