예제 #1
0
        public static void Main()
        {
            if (SingleInstance <App> .InitializeAsFirstInstance("{E17EF702-0CDB-4CC2-808A-EE33BAA03B34}"))
            {
                var application = new App();

                // parse requested Uri if present
                StackHashUri stackHashUri = null;
                if (StackHashUri.TryParse(Environment.GetCommandLineArgs(), out stackHashUri))
                {
                    DiagnosticsHelper.LogMessage(DiagSeverity.Information,
                                                 string.Format(CultureInfo.CurrentCulture,
                                                               "Command line requests navigation to {0}",
                                                               stackHashUri.RawUri));

                    application.CurrentStackHashUri = stackHashUri;
                }

                application.InitializeComponent();
                application.Run();

                // Allow single instance code to perform cleanup operations
                SingleInstance <App> .Cleanup();
            }
        }
예제 #2
0
        /// <summary />
        public bool SignalExternalCommandLineArgs(IList <string> args)
        {
            DiagnosticsHelper.LogMessage(DiagSeverity.Information,
                                         "Other instance activation...");

            // only take action if no owned windows are active
            if (this.MainWindow.OwnedWindows.Count == 0)
            {
                // activate the main window
                if (this.MainWindow != null)
                {
                    if (this.MainWindow.WindowState == WindowState.Minimized)
                    {
                        this.MainWindow.WindowState = WindowState.Normal;
                    }

                    this.MainWindow.Activate();
                }

                // parse the requested Uri (if present) and request navigation
                StackHashUri stackHashUri = null;
                if (StackHashUri.TryParse(args, out stackHashUri))
                {
                    DiagnosticsHelper.LogMessage(DiagSeverity.Information,
                                                 string.Format(CultureInfo.CurrentCulture,
                                                               "Other instance requests navigation to {0}",
                                                               stackHashUri.RawUri));

                    this.CurrentStackHashUri = stackHashUri;
                    if (StackHashUriNavigationRequest != null)
                    {
                        StackHashUriNavigationRequest(this, EventArgs.Empty);
                    }
                }
            }
            else
            {
                DiagnosticsHelper.LogMessage(DiagSeverity.Warning,
                                             "Other instance activation ignored as owned windows exist");
            }

            return(true);
        }