阻止文件关联再次打开应用程序

时间:2016-10-03 16:35:20

标签: c# .net wpf windows file-association

我开发了一个wpf应用程序,并且我关联了一个名为.fcsc的文件类型。双击文件时会打开应用程序,但它会执行应用程序的新实例。我想要的是,如果应用程序已经运行,请打开该实例中的文件而不是新文件。

我如何存档?

这是文件打开时的内容:

if (AppDomain.CurrentDomain.SetupInformation != null 
                && AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null 
                && AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null &&
                AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Any())
            {
                // is a file association invoke, open the window
                InstallPluginWindow installPluginWindows = new InstallPluginWindow(AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData);
                installPluginWindows.Show();
                installPluginWindows.Owner = this;
                this.Opacity = 0.5;
                this.IsEnabled = false;
                installPluginWindows.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
                installPluginWindows.Closed += installPluginWindows_Closed;
            }
            else
            {
                NegotiateLogin();
            }

1 个答案:

答案 0 :(得分:1)

简单的部分是设置互斥锁来检查另一个实例。在您的应用程序主代码或启动代码中,您需要像下面的代码那样:

$.getJSON("/weblogin",function(data){
  $("#email").text(data.email)
}

接下来,您需要实现一种方法来向第一个应用程序实例发送消息并传入双击的文件名。您可以通过多种方式执行此操作,但是,向主窗口发送自定义消息似乎是最直接的。 Here是另一个应用程序消息的替代方法。