9

別の wpf アプリケーションから 1 つの wpf アプリケーションを呼び出そうとしています。呼び出し元の wpf アプリケーションが呼び出しを行います

ProcessStartInfo BOM = new ProcessStartInfo();

BOM.FileName = @"D:\WPFAPPLICATION.exe";

BOM.Arguments = temp;

Process.Start(BOM);

呼び出されたアプリケーションで、渡された引数を取得しようとしました

  string arguments =Process.GetCurrentProcess().StartInfo.Arguments;

ただし、引数は渡されません。どうしてこれなの??

私は別の方法も試しました:

    public partial class App : Application
    {
    public static String[] mArgs;

    private void Application_Startup(object sender, StartupEventArgs e)
    {

        if (e.Args.Length > 0)
        {
            mArgs = e.Args;


        }
    }
    }
    }

しかし、これもうまくいきませんでした!!! 助けてください!!

4

2 に答える 2

3

Environmentクラスを使用して、コマンドライン引数を取得してみてください。

string[] args = Environment.GetCommandLineArgs

または、WPF アプリケーション (App.xaml.cs) のメイン メソッドに渡される string[] を使用します。

public partial class App : Application {

    protected override void OnStartup(StartupEventArgs e) {
        string[] args = e.Args;
    }
}

注: 呼び出し

string arguments =Process.GetCurrentProcess().StartInfo.Arguments;

値を返しません。このMSDNエントリを参照してください

Start メソッドを使用してプロセスを開始しなかった場合、StartInfo プロパティは、プロセスの開始に使用されたパラメーターを反映しません。たとえば、GetProcesses を使用してコンピューター上で実行されているプロセスの配列を取得する場合、各 Process の StartInfo プロパティには、プロセスの開始に使用された元のファイル名または引数は含まれません。

于 2012-05-11T07:51:45.087 に答える
2

誰かが興味を持っていれば、ついに私の質問に対する解決策を見つけました。呼び出し元のアプリケーションでは、以前に使用したのと同じコードを維持しました。

ProcessStartInfo BOM = new ProcessStartInfo();
BOM.FileName = @"D:\WPFAPPLICATION.exe";
BOM.Arguments = temp;
Process.Start(BOM);

呼び出されたアプリケーションで引数を正常に受け取るには、次のことを行う必要がありました。

    System.Text.StringBuilder strbuilder= new System.Text.StringBuilder();


    foreach (String arg in Environment.GetCommandLineArgs())
    {
        strbuilder.AppendLine(arg);
        barcode = arg;
    }
    psnfo = strbuilder.ToString();

プロセスに渡された引数を正しい方法で処理していませんでした

psnfoを表示すると

コードは次を返します。

 D:\WPFAPPLICATION.exe temp

ソース: http://www.codeproject.com/Questions/386260/Using-process-start-in-a-wpf-application-to-invoke

于 2012-05-17T09:28:51.110 に答える