C # Запустить приложение с несколькими аргументами - PullRequest
10 голосов
/ 11 августа 2010

Я пытался запустить приложение из приложения C #, но оно не запускается должным образом. Из cmd приложение плюс аргументы запускают небольшое окно, показывающее вывод, затем приложение сворачивается в системный трей.

Запуск приложения из приложения C # с использованием приведенного ниже кода приводит к тому, что процесс появляется в диспетчере задач, но ничего больше, ни окна вывода, ни значка в системном трее. В чем может быть проблема?

    myProcess.StartInfo.FileName = ...;
    myProcess.StartInfo.Arguments = ...;
    myProcess.Start();

также попытался передать следующее

    myProcess.StartInfo.RedirectStandardOutput = true; //tried both
    myProcess.StartInfo.UseShellExecute = false; //tried both 
    myProcess.StartInfo.CreateNoWindow = false;

с использованием

    Process.Start(Filename, args)

тоже не работал. Буду очень признателен за помощь в решении этой проблемы.

UPDATE: Я думаю, что проблема может быть в нескольких аргументах, которые должны быть переданы процессу

RunMode=Server;CompanyDataBase=dbname;UserName=user;PassWord=passwd;DbUserName=dbu;Server=localhost;LanguageCode=9

привет

Ответы [ 4 ]

9 голосов
/ 11 августа 2010

Я не вижу ошибок в вашем коде.Я написал небольшую программу, которая выводит ее аргументы на консоль

static void Main (string[] args)
{
     foreach (string s in args)
         Console.WriteLine(s);
     Console.Read(); // Just to see the output
}

, а затем я поместил ее в C: имя приложения «PrintingArgs.exe», поэтому я написал другуютот, который выполняет первый:

Process p = new Process();
p.StartInfo.FileName = "C:\\PrintingArgs.exe";
p.StartInfo.Arguments = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18";
p.Start();

, это дает мне желаемый вывод списка чисел.Приложение, которое вызывает PrintingArgs, завершает работу, когда достигает p.Start (), этого можно избежать, используя p.WaitForExit(); или просто Console.Read();.Также я использовал и p.UseShellExecute и p.CreateNoWindow.Только в том случае, если

p.UseShellExecute = false;
p.CreateNoWindow = true;

заставит приложение PrintingArgs не показывать окно (даже если я поставлю только p.CreateNoWindow = true, оно показывает окно).

Теперь это приходит мне в головучто, возможно, вы неправильно передаете аргументы и заставляете другую программу сразу же закрываться или закрываться, или, возможно, вы не указываете на нужный файл.Проверьте пути и имена, чтобы найти любую ошибку, которую вы могли бы пропустить.Кроме того, использование

 Process.Start(fileName, args);

не использует информацию, которую вы настроили с помощью StartInfo в вашем экземпляре процесса.

Надеюсь, это поможет, с уважением

5 голосов
/ 26 января 2015

Не уверен, что кто-то все еще следит за этим, но вот что я придумал.

string genArgs = arg1 + " " + arg2;
string pathToFile = "Your\Path";
Process runProg = new Process();
try
{
    runProg.StartInfo.FileName = pathToFile;
    runProg.StartInfo.Arguments = genArgs;
    runProg.StartInfo.CreateNoWindow = true;
    runProg.Start();
}
catch (Exception ex)
{
    MessageBox.Show("Could not start program " + ex);
}

Добавление пробела в строке позволило передать два аргумента в программу, которую я хотел запустить.Программа запустилась без проблем после выполнения кода.

2 голосов
/ 01 апреля 2014

Вы установили для ProcessWindowStyle значение Hidden? Это мой код, работает нормально:

Process p=new Process();
p.StartInfo.FileName = filePath;//filePath of the application
p.StartInfo.Arguments = launchArguments;
p.StartInfo.WindowStyle = (ProcessWindowStyle)ProcessStyle;//Set it to **Normal**
p.Start();
1 голос
/ 11 августа 2010
      System.Diagnostics.Process.Start(FileName,args);

Например

     System.Diagnostics.Process.Start("iexplore.exe",Application.StartupPath+ "\\Test.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...