无法使用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