我跟已经在这里得到解决的问题相似。 但是我不知道问题是怎么解决的。我的程序接受参数,定义输入和输出文件。从命令行运行,一切正常:
D:\Tools\siftDemoV4>siftWin32.exe -display < D:\tmp\SrcPgm\image000.pbm > result.pbm
但是通过System.Diagnostics.Process运行不起作用。我会收到错误信息“无效的命令行参数:<”,然后会发生System.InvalidOperationException。
var process = new Process()
{
StartInfo =
{
Arguments = string.Format(@"-display < {0} > {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)。
有人能解释一下如何将这些特殊的"<" ">"参数传递给程序吗?
最好的问候!
顺便说一句,我多次检查了路径,它们是正确的。
<
和>
不起作用在最后一个段落中有解释。 - Nuffin<
之后的所有内容都不再是应用程序的参数,而是命令行处理器的“开关”(可以这么说)。 - user7116