2015-12-23 5 views
-4

Я хочу запустить файл EXE с параметрами.Запустите еще один EXE с параметрами командной строки в C#

Я попытался с Button1 запустить consoleapp (работает). С Button2 я попытался открыть тот же consoleapp с параметрами (работает). С Button3 я попытался открыть приложение WindowsFromsApplication с параметрами. Приложение WindowsFromsApplication не запускается и не запускает WindowsMessage, что он не может быть открыт (но не в debugmode).

Если я использую тот же WindowsFromsApplication с ярлыком на рабочем столе и параметрами, он работает.

Что не так, мое решение?

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     System.Diagnostics.Process.Start(Application.StartupPath + "\\ParamTest1.exe"); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     System.Diagnostics.Process.Start(Application.StartupPath + "\\ParamTest1.exe", "Test"); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     System.Diagnostics.Process.Start(Application.StartupPath + "\\Tool.exe","UserName Password"); 
    } 

Кодекс tool.exe:

static class Program 
{ 
    /// <summary> 
    /// Der Haupteinstiegspunkt für die Anwendung. 
    /// </summary> 
    [STAThread] 
    static void Main(string[] args) 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new FormMain(args)); 
    } 
} 

И FormMain:

public partial class FormMain: Form 
{ 
    string Raptoruser = ""; 

    public FormMain(string[] args) 
    { 
     InitializeComponent(); 

...

копия Visual Studio ЕХ, как запланированная в отладочной папке ,

+2

Пожалуйста, прочитайте [ask]. «Это не работает» не является надлежащим описанием проблемы. – CodeCaster

+1

Что значит «не работает»? ошибки? неверные результаты? – Sayse

+0

У вас есть доступ к исходному коду слова "tool.exe"? – cristobalito

ответ

0

Вам необходимо передать аргументы, используя свойство ProcessStartInfo.Arguments. И обратите внимание, что если ваш арг содержит пробелы, нужно добавить кавычки вокруг аргументах, поэтому, я полагаю, вам нужно исправить код л, как это:

Process.Start(new ProcessStartInfo(Application.StartupPath + "\\Tool.exe") 
{ 
    Arguments = String.Format(@"""{0} {1}""", UserName, Password) 
} 
); 

И также убедитесь, что ваш Tool.exe помещен в том же месте с исполняемым файлом решения.

+2

«Попробуйте это» не объясняет, почему и как вы думаете, что это решит проблему (а не мой нисходящий). – Sayse

+0

Попробуйте использовать правильное написание и объясните, что вы изменили. То, что вы изменили, - это добавить кавычки, которые также могут быть просто выражены как «Process.Start» («Tool.exe», @ »« «Username Password» "") ', но если это сработает, это сделало бы требование OP _" ярлык и параметры, которые он работает "_ неверно. – CodeCaster

+1

И теперь ваш ответ просто неверен. Вы не пытаетесь использовать 'ProcessStartInfo' и его свойство' Arguments', это то, что нужно для 'Process.Start (string, string)' overload. Кроме того, вам не нужны кавычки вокруг аргументов, если эти аргументы _meant разделены пробелами. – CodeCaster

Смежные вопросы