0

コマンドライン引数を取る child.exe があります。その child.exe を別の parent.exe アプリケーションから開始する必要があり、別のコマンド ライン引数をその child.exe に渡す必要があります。次のコードで試しました。

Process process = new Process();
        process.StartInfo.FileName = @"R:\bin\child.exe";
        process.StartInfo.Arguments = "CONSUMER";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.CreateNoWindow = true;
        process.Start();

process = new Process();
        process.StartInfo.FileName = @"R:\bin\child.exe";
        process.StartInfo.Arguments = "SUPERVISOR";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.CreateNoWindow = true;
        process.Start();

しかし、ここでの問題は、process.Start() を呼び出すたびに、別の exe が作成されることです。異なるコマンド ライン引数を受け入れる child.exe の実行インスタンスが 1 つだけ必要です。どんな助けでも大歓迎です。

4

4 に答える 4

4

もちろん、新しいプロセスを作成します。既存のプロセスに新しい引数を渡したい場合は、ある種の IPC を使用するのが最適です。

于 2009-07-29T15:23:43.657 に答える
0

まず、 Mutexを使用するように子アプリケーションを設定して、一度だけ実行されるようにすることができます。

次に、さまざまなプロセス間で通信して目的の効果を達成できるようにするために、おそらくリモーティング機能を検討する必要があります。

于 2009-07-29T15:34:02.887 に答える
0

または、アセンブリをparent.exeプロセスに動的にロードし、その中でメソッドを呼び出します。分離された AppDomain で実行することもできます (child.exe がマネージ コードで記述されている場合)。初心者向けのこの MSDN 記事をご覧ください。

http://msdn.microsoft.com/en-us/library/6s0z09xw.aspx

于 2009-07-29T15:34:53.167 に答える
-4

コードで、パラメーターを含むバットファイルを作成します。親exeはbatファイルを呼び出します。親終了後、bat ファイルを削除します。

于 2009-07-29T15:24:41.207 に答える