我有一个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文件的操作。
这个问题在哪里?问题是否是线程,我不知道。
有人可以在上面的代码中告诉我需要更改的内容吗?
答案 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