0

我有一个 child.exe,它接受命令行参数。我需要从另一个 parent.exe 应用程序启动该 child.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 实例,它可以接受不同的命令行参数。任何帮助表示赞赏。

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

在代码中创建一个 bat 文件,其中将包含您的参数。父 exe 将调用 bat 文件。在父端删除bat文件后。

于 2009-07-29T15:24:41.207 回答