public static void Main(string[] args) { _protocolActivationUrl = GetProtocolActivationUrl(); if (IpcClient.RequestNavigation(_protocolActivationUrl)) { // サーバーとの通信に成功した == 二重起動である // 二重起動の場合は、アプリを終了する return; } App app = new App(); 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); } } }
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); } } }