2

这个问题可能看起来有点模糊,但我们开始吧。

我正在阻止我的 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;
}

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

4

2 回答 2

3

不,这是不可能的。您应该使用一些进程间通信技术。

于 2013-01-10T12:27:15.743 回答
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其中定义,SingleInstance.cs我也在ISingleInstanceApp我的应用程序类中实现。

感谢所有的帮助!

于 2013-01-10T13:23:24.247 回答