将命令行参数从C#传递到外部exe
我有类似的问题已在这里解决了 。 但我无法弄清楚,问题是如何解决的。 我有一个程序,可以定义一个输入和输出文件。 从Commend行运行,一切正常:
D:\Tools\siftDemoV4>siftWin32.exe -display result.pbm
但是通过System.Diagnostics.Process运行不起作用。 我收到错误“无效的命令行参数:<”,然后发生System.InvalidOperationException。
var process = new Process() { StartInfo = { Arguments = string.Format(@"-display {1}", configuration.Source, configuration.Destination), FileName = configuration.PathToExternalSift, RedirectStandardError = true, RedirectStandardInput = true, RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true, ErrorDialog = false, } }; process.EnableRaisingEvents = true; process.Exited += OnProcessExited; process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine();
在调用process.Start()之后,我已经尝试写入process.StandardInput,但是在使用调试器时,外部程序有时已经完成(HasExited == true)。
任何人都可以解释我如何将这个特殊的“”参数传递给程序吗?
最好的问候!
顺便说一句,我多次检查路径,它们是正确的。
您需要的唯一参数是-display
其他不是程序的参数,应该由您使用RedirectStandardInput
和RedirectStandardOutput
来处理
例如
- 读取文件
D:\tmp\SrcPgm\image000.pbm
- 写入您的流程的
StandardInput
- 从您的流程的
StandardOutput
中读取 - 写入
result.pbm
使用命令重定向运算符