2010-03-31 70 views
4

我有一个exe文件,我需要从我的C#程序有两个参数(PracticeId,ClaimID的)无法使用C#代码

例如调用运行.exe文件的应用程序: 假设我有一个应用程序test.exe,其功能是根据给定的两个论点进行索赔。

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文件的其操作。

问题在哪里?不管问题是否是线程化的,我都不知道。

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

+0

确定“TEST.EXE”甚至被执行?如果我必须打赌,我敢打赌它根本没有被执行。 – 2010-03-31 04:37:13

回答

1

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

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

让我知道它是否有效。

+0

它使用Visual Studio 2013时工作 – YumYumYum 2016-02-23 17:52:30

0

检查你的工作目录是什么。 test.exe是否在你的路径中?如果没有,你需要提供路径。如果您知道它在哪里,那么提供路径是一种很好的做法。您可以从应用程序路径,程序集执行路径或某些用户首选项设置中动态构建它。

3

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

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(); 
+0

msg说:“为了重定向IO流,Process对象必须将UseShellExecute属性设置为* false *”但您的代码使用true? – whytheq 2017-02-07 16:02:28

+1

正确,所以我也通过设置'RedirectStandardOutput = false'来禁用重定向。这样它很高兴 – 2017-02-08 22:50:52