- Modifier les propriétés de votre projet pour que votre application soit une "Application Windows" (pas de "Console Application"). Vous pouvez toujours accepter les paramètres de ligne de commande de cette façon. Si vous ne le faites pas, alors une fenêtre de console s'affichera lorsque vous double-cliquez sur l'icône de l'application.
- Assurez-vous que votre
Main
fonction accepte des paramètres de ligne de commande.
- Ne pas afficher la fenêtre si vous avez des paramètres de ligne de commande.
Voici un court exemple:
[STAThread]
static void Main(string[] args)
{
if(args.Length == 0)
{
Application.Run(new MyMainForm());
}
else
{
// Do command line/silent logic here...
}
}
Si votre application n'est pas déjà structuré à proprement taire traitement (si toute votre logique est coincé dans votre WinForm code), vous pouvez pirater le silence de traitement en ala CharithJ de réponse.
EDIT par OP
Désolé de détourner votre réponse Merlyn. Veux juste toutes les infos ici pour les autres.
Pour être en mesure d'écrire dans la console dans une application WinForms juste faire ce qui suit:
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());
}
}
}