无法使用C#代码运行.exe应用程序

我有一个exe需要从我的C#程序调用两个参数(PracticeId,ClaimId)

例如:假设我有一个应用程序test.exe ,其function是根据给定的两个参数进行声明。

在cmd上,我通常会给出以下命令:

test.exe 1 2

它工作正常并执行转换工作。

但我想用c#代码执行相同的操作。 我使用以下示例代码:

 Process compiler = new Process(); compiler.StartInfo.FileName = "test.exe" ; compiler.StartInfo.Arguments = "1 2" ; compiler.StartInfo.UseShellExecute = true; compiler.StartInfo.RedirectStandardOutput = true; compiler.Start(); 

当我尝试使用上面的代码调用test.exe ,它无法执行生成声明txt文件的操作。

这个问题在哪里? 问题是否是线程,我不知道。

有人可以告诉我在上面的代码中需要更改什么吗?

您运行它时,您提供的代码失败并出现以下错误:

System.InvalidOperationException

Process对象必须将UseShellExecute属性设置为false才能重定向IO流。

以下代码正确执行并传递参数:

 var compiler = new Process(); compiler.StartInfo.FileName = "test.exe"; compiler.StartInfo.Arguments = "1 2"; compiler.StartInfo.UseShellExecute = true; compiler.StartInfo.RedirectStandardOutput = false; compiler.Start(); 

虽然我还没有测试过我的代码,但我希望这会帮助你做你想做的事……

Process.Start(“xyz.exe”,“1 2”);

让我知道它是否有效。

检查您的工作目录是什么。 你的路径中有test.exe吗? 如果没有,您将需要提供路径。 如果您知道它的位置,最好提供路径。 您可以从应用程序路径,程序集执行路径或某些用户首选项设置动态构造它。

MSDN应该有所帮助。 他们看起来已经更新了一些网站,并且针对您的特定问题的示例非常详细。

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx