将参数传递给应用程序

时间:2013-01-10 12:24:41

标签: c# wpf process command-line-arguments app-startup

这个问题可能看起来有点模糊,但我们走了。

我正在阻止我的wpf应用程序的多个实例,如下所示:

Process proc = Process.GetCurrentProcess();
if (Process.GetProcessesByName(proc.ProcessName).Length > 1)
{
    Application.Current.Shutdown();
    return;
}

if (e.Args != null && e.Args.Count() > 0)
{
    this.Properties["Magnet"] = e.Args;
}

是否可以将命令行参数传递给已在运行的应用程序?

2 个答案:

答案 0 :(得分:3)

不,这是不可能的。您应该使用一些inter process communication技术。

答案 1 :(得分:2)

对于任何有兴趣的人,我决定在我的App.Xaml.cs中使用这段代码:

[STAThread]
public static void Main()
{
    if (SingleInstance<App>.InitializeAsFirstInstance(UNIQUE))
    {
        var application = new App();
        application.InitializeComponent();
        application.Run();
        SingleInstance<App>.Cleanup();
    }
}

public bool SignalExternalCommandLineArgs(IList<string> args)
{
    // Use arguments
    return true;
}

UNIQUE是一个由20个字符组成的常量字符串。

SingleInstance<App>.Cleanup()派生自ISingleInstanceApp ISingleInstanceAppSingleInstance.cs,我也在我的应用类中实现了{{1}}。

感谢您的帮助!