Передача аргументов командной строки из C # во внешний exe - PullRequest
2 голосов
/ 24 января 2012

У меня проблема, подобная уже решенной здесь . Но я не могу понять, как проблема была решена. У меня есть программа, которая получает параметр определить входной и выходной файл. Запустив это из строки Commend, все работает нормально:

D:\Tools\siftDemoV4>siftWin32.exe -display < D:\tmp\SrcPgm\image000.pbm > result.pbm

Но работает через System.Diagnostics.Process, не работает. Я получаю сообщение об ошибке «Недопустимый аргумент командной строки: <», и после этого возникает исключение System.InvalidOperationException. </p>

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.StandardInput после того, как вызвал process.Start (), но при использовании отладчика внешняя программа была когда-то уже завершена (HasExited == true).

Кто-нибудь может объяснить, как я могу передать эти специальные "<" ">" параметры в программу?

С наилучшими пожеланиями!

Кстати, я несколько раз проверял путь, они верны.

1 Ответ

2 голосов
/ 24 января 2012

Единственный параметр, который вам нужен - -display Другие параметры не являются параметрами программы и должны обрабатываться вами с помощью RedirectStandardInput и RedirectStandardOutput

Например,

  • чтение файла D:\tmp\SrcPgm\image000.pbm
  • запись в StandardInput вашего процесса
  • чтение из StandardOutput вашего процесса
  • запись в result.pbm

Использование операторов перенаправления команд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...