- Modifica le proprietà del progetto per rendere la vostra applicazione di una "Applicazione Windows" (non "Console Application"). È ancora possibile accettare i parametri della riga di comando in questo modo. Se non lo fai, apparirà una finestra della console quando fai doppio clic sull'icona dell'app.
- Verificare che la funzione
Main
accetti i parametri della riga di comando.
- Non mostrare la finestra se si ottengono parametri della riga di comando.
Ecco un breve esempio:
[STAThread]
static void Main(string[] args)
{
if(args.Length == 0)
{
Application.Run(new MyMainForm());
}
else
{
// Do command line/silent logic here...
}
}
Se l'applicazione non è già strutturato per fare l'elaborazione in modo pulito silenzioso (se tutta la vostra logica è inceppata nel codice WinForm), è possibile hack silent processing in ala CharithJ's answer.
MODIFICA da OP Mi dispiace per dirottare la risposta Merlyn. Voglio solo tutte le informazioni qui per gli altri.
Per essere in grado di scrivere a consolare in un'applicazione WinForms solo effettuare le seguenti operazioni:
static class Program
{
// defines for commandline output
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
AttachConsole(ATTACH_PARENT_PROCESS);
if (args.Length > 0)
{
Console.WriteLine("Yay! I have just created a commandline tool.");
// sending the enter key is not really needed, but otherwise the user thinks the app is still running by looking at the commandline. The enter key takes care of displaying the prompt again.
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
Application.Exit();
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new QrCodeSampleApp());
}
}
}
fonte
2011-08-26 01:07:36
si può assolutamente usare la stessa applicazione. Basta aggiungere 'string [] args' al metodo Main –
Oppure, date un'occhiata alle risposte a questa domanda: http://stackoverflow.com/questions/1179532/ –
Dal momento che non stai chiedendo di leggere l'input dalla console (solo dai parametri della riga di comando), questo è un dupe. –