2015-12-23 77 views
-4

我想用參數啓動一個EXE文件。用C#中的命令行參數啓動另一個EXE

我試着用Button1啓動一個consoleapp(工程)。用Button2我試圖用Parameters(works)打開相同的consoleapp。隨着Button3我試圖用參數打開WindowsFromsApplication。 WindowsFromsApplication不運行並投射WindowsMessage,它不能被打開(但不在調試模式中)。

如果我使用相同的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複製EXE按計劃在debug文件夾。

+2

請閱讀[問]。 「它不起作用」不是一個適當的問題描述。 – CodeCaster

+1

「不起作用」是什麼意思?錯誤?結果無效? – Sayse

+0

你有權訪問「tool.exe」的源代碼嗎? – cristobalito

回答

0

您需要使用ProcessStartInfo.Arguments屬性傳遞參數。和通知,如果你的ARGS包含您需要添加在你的ARGS行情的空間,所以,我建議你需要更正你的代碼水木清華這樣的:

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

,並且確保你的Tool.exe放置與解決方案的可執行文件位於同一位置。

+2

「試試這個」並不能解釋爲什麼或者你認爲這會如何解決問題(不是我的downvote) – Sayse

+0

嘗試使用正確的拼寫和解釋你改變了什麼。你改變的是添加引號,它也可以表示爲'Process.Start(「Tool.exe」,@「」「用戶名密碼」「」)',但如果這樣做的話,它會使OP的聲明_「帶有快捷方式和參數「_不正確。 – CodeCaster

+1

現在你的答案只是不正確的。你不需要使用'ProcessStartInfo'和它的'Arguments'屬性,這就是'Process.Start(string,string)'重載的目的。另外,如果這些參數可能被空格分隔,則不需要引號。 – CodeCaster