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 に答える