Ejemplo n.º 1
0
        private void OnStartup(object sender, StartupEventArgs e)
        {
            MainWindow mainWindow = new MainWindow();

            mainWindow.Show();
            if (_protocolActivationUrl != null)
            {
                mainWindow.Navigate(_protocolActivationUrl);
            }
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            // プロトコルアクティベーションで起動されたときの、表示すべきURL
            string protocolActivationUrl = GetProtocolActivationUrl();

            if (IpcClient.RequestNavigation(protocolActivationUrl))
            {
                // サーバーとの通信に成功した == 二重起動である
                // 二重起動の場合は、アプリを終了する
                return;
            }

            App app = new App();

            app.Startup += OnStartup;
            app.InitializeComponent();
            app.Run();

            return; // 以下はローカル関数のみ

            string GetProtocolActivationUrl()
            {
                if (args.Length > 0 &&
                    args[0].StartsWith("uf05.bluewatersoft.jp-timelinetest:") &&
                    Uri.TryCreate(args[0], UriKind.Absolute, out var uri))
                {
                    return(uri.Query.Substring(1));
                }
                else
                {
                    return(null);
                }
            }

            void OnStartup(object sender, StartupEventArgs e)
            {
                // App.xamlから「StartupUri="MainWindow.xaml"」の部分を削除しておく

                // プロセス間通信のサーバーを起動する
                IpcServer.StartService();

                // MainWindowを表示する
                MainWindow mainWindow = new MainWindow();

                mainWindow.Show();
                if (protocolActivationUrl != null)
                {
                    // プロトコルアクティベーションのときは、そのURLを表示する
                    mainWindow.Navigate(protocolActivationUrl);
                }
            }
        }