2009-10-05 4 views

Antwort

27

Wenn Sie diese Standard-Haupt Signatur ändern:

[STAThread] 
static void Main() 

Um dies:

[STAThread] 
static void Main(String[] args) 

Sie können die Kommandozeilen-Variablen zugreifen, wie Sie von einer normalen Konsolenanwendung würde, oder wenn Sie von woanders auf sie zugreifen möchten, können Sie verwenden:

System.Environment.GetCommandLineArgs(); 
+0

Hah, diese erste Methode habe ich vor einiger Zeit in einer Erklärung für einen Freund benutzt. +1 – Kawa

2

Ja, es sollte funktionieren, um das Projekt als normales Windows-App-Projekt zu erstellen. Dann rufen Sie in der Datei program.cs vor dem Start des Fensters Environment.GetCommandLineArgs() auf, um die Befehlszeilenargumente abzurufen und sie zu parsen, um das zu tun, was Sie wollen.

8
[STAThread] 
static void Main(string[] args) 
{ 
    if (args.Length == 0) 
    { 
     // Run the application in a windows form 
     Application.Run(new MainForm()); 
    } 
    else 
    { 
     // Run app from CLI 
     Console.WriteLine(DoStuff(args)); 
    } 
}
+1

+1 für die Beantwortung des zweiten Teils der Frage. Sie fehlen eine Klammer am Ende von WriteLine (. Ich glaube auch nicht, dass Sie in einer Windows-Formularanwendung auf die Konsole schreiben können. –

+0

Sie haben Recht, dass Sie nicht Console.WriteLine zu einer Winforms-App. Der Punkt meiner Antwort ist, dass Sie keine Windforms-App erstellen müssen, Sie können eine einzelne ausführbare Datei erstellen, die je nach Aufruf als Formular oder Befehlszeile ausgeführt wird –

+0

Ich habe das gerade getestet und es ist kein Befehlsfenster für den Text geöffnet Ich denke, es fehlt ein Befehl, um das comamndline-Fenster zu starten. –

Verwandte Themen