views:

319

answers:

4

I would like a windows form app that will contain a UI, but I want it to run from the command line with some parameters possibly also a /hide or /visible=false option.

How is it possible to read in the command line parameters? And adjust accordingly?

+3  A: 

Use Environment.GetCommandLineArgs()

Kobi
+15  A: 

If you change this default Main signature:

[STAThread]
static void Main()

To this:

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

You can access the commandline variables as you would from a normal console app, or if you want to access them from elsewhere you can use:

System.Environment.GetCommandLineArgs();
Steven Robbins
Hah, that first method is what I used in an explanation to a friend a while back. +1
Kawa
+2  A: 

Yes, it should work to create the project as a normal windows app project. Then in program.cs before you launch the window, call Environment.GetCommandLineArgs() to get the command line arguments and parse them to do what you want.

David
+4  A: 
[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));
    }
}
Dour High Arch
+1 for answering the second part of the question. You are missing a bracket at the end of WriteLine(. Also, I don't think you can write to the console like that in a windows form application.
Tuzo
You are right that you cannot Console.WriteLine to a Winforms app. The point of my answer is that you need not create a Windforms app, you can create a single executable that will run as a form or command-line depending on how it is invoked.
Dour High Arch