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

时间:2010-03-31 04:06:24

标签: c# .net

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

例如: 假设我有一个应用程序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文件的操作。

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

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

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

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

让我知道它是否有效。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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