Je suis sous Windows XP et je voudrais faire à l'aide de Visual Studio 2005
une application à la fois Console et Windows, le comportement étant décidé
par exemple en fonction d'un paramètre de la ligne de commande.
J'ai essayé de deux façons :
1) je crée mon appli en tant que "Window Application" et dans le Main
j'appelle ou pas Application.Run(new Form1()); ça marche sauf que quand je
lance l'appli depuis la ligne de commande Console.Write n'affiche rien
2) je crée mon appli en tant que "Console Application" et dans le Main
j'appelle ou pas Form1 form = new Form1; form.ShowDialog(); ça marche aussi
sauf que quand je lance l'appli, une fenêtre de console vide s'ouvre et
reste ouverte tant que je ne ferme pas l'appli.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Simon Mourier [SoftFluent]
La différence entre application "Console" et "Winform" est une notion profondément ancrée dans Windows, bien avant .NET, et décrite dans le format de fichier des exécutables. Une application sous Windows est marquée fortement comme
IMAGE_SUBSYSTEM_WINDOWS_CUI (Windows character-mode user interface (CUI) subsystem)
ou
IMAGE_SUBSYSTEM_WINDOWS_GUI (Windows graphical user interface (GUI) subsystem)
Il n'y a pas de solution miracle. Une appli marquée GUI n'aura pas de console par défaut (et si elle est lancée en ligne de commande, l'utilisation de la console n'écrira rien dans la console qui aura lancée cette appli), et une appli marquée par CUI aura toujours une console par défaut qui traîne si on la lance par l'explorateur.
Il existe juste quelques astuces qui permettent de résoudre partiellement, mais jamais complètement ce problème:
1) Si l'appli est marquée comme GUI (Winform), elle peut toujours créer sa propre console par l'API Windows AllocConsole
va ouvrir une fenêtre console, y écrire coucou et la fermer.
2) Si l'appli est marquée comme CUI (Console), et qu'elle a été lancée par l'explorateur, il est possible de masquer la fenêtre console "qui traîne".
Un bon exemple d'une telle application est ILDASM.EXE du .NET Framework, c'est une application marquée comme Console, mais qui montre aussi des fenêtres, et qui masque sa console dès qu'elle est lancée par l'explorateur.
Simon. www.softfluent.com
"Emmanuel Thiry" a écrit dans le message de news: %
Salut,
Je suis sous Windows XP et je voudrais faire à l'aide de Visual Studio 2005 une application à la fois Console et Windows, le comportement étant décidé par exemple en fonction d'un paramètre de la ligne de commande.
J'ai essayé de deux façons : 1) je crée mon appli en tant que "Window Application" et dans le Main j'appelle ou pas Application.Run(new Form1()); ça marche sauf que quand je lance l'appli depuis la ligne de commande Console.Write n'affiche rien 2) je crée mon appli en tant que "Console Application" et dans le Main j'appelle ou pas Form1 form = new Form1; form.ShowDialog(); ça marche aussi sauf que quand je lance l'appli, une fenêtre de console vide s'ouvre et reste ouverte tant que je ne ferme pas l'appli.
Vous auriez une idée ? merci,
Manu
La différence entre application "Console" et "Winform" est une notion
profondément ancrée dans Windows, bien avant .NET, et décrite dans le format
de fichier des exécutables. Une application sous Windows est marquée
fortement comme
IMAGE_SUBSYSTEM_WINDOWS_CUI (Windows character-mode user interface (CUI)
subsystem)
ou
IMAGE_SUBSYSTEM_WINDOWS_GUI (Windows graphical user interface (GUI)
subsystem)
Il n'y a pas de solution miracle. Une appli marquée GUI n'aura pas de
console par défaut (et si elle est lancée en ligne de commande,
l'utilisation de la console n'écrira rien dans la console qui aura lancée
cette appli), et une appli marquée par CUI aura toujours une console par
défaut qui traîne si on la lance par l'explorateur.
Il existe juste quelques astuces qui permettent de résoudre partiellement,
mais jamais complètement ce problème:
1) Si l'appli est marquée comme GUI (Winform), elle peut toujours créer sa
propre console par l'API Windows AllocConsole
va ouvrir une fenêtre console, y écrire coucou et la fermer.
2) Si l'appli est marquée comme CUI (Console), et qu'elle a été lancée par
l'explorateur, il est possible de masquer la fenêtre console "qui traîne".
Un bon exemple d'une telle application est ILDASM.EXE du .NET Framework,
c'est une application marquée comme Console, mais qui montre aussi des
fenêtres, et qui masque sa console dès qu'elle est lancée par l'explorateur.
Simon.
www.softfluent.com
"Emmanuel Thiry" <ethiry@nospam.nospam> a écrit dans le message de news:
%23vfxoIl4GHA.1668@TK2MSFTNGP04.phx.gbl...
Salut,
Je suis sous Windows XP et je voudrais faire à l'aide de Visual Studio
2005 une application à la fois Console et Windows, le comportement étant
décidé par exemple en fonction d'un paramètre de la ligne de commande.
J'ai essayé de deux façons :
1) je crée mon appli en tant que "Window Application" et dans le Main
j'appelle ou pas Application.Run(new Form1()); ça marche sauf que quand je
lance l'appli depuis la ligne de commande Console.Write n'affiche rien
2) je crée mon appli en tant que "Console Application" et dans le Main
j'appelle ou pas Form1 form = new Form1; form.ShowDialog(); ça marche
aussi sauf que quand je lance l'appli, une fenêtre de console vide s'ouvre
et reste ouverte tant que je ne ferme pas l'appli.
La différence entre application "Console" et "Winform" est une notion profondément ancrée dans Windows, bien avant .NET, et décrite dans le format de fichier des exécutables. Une application sous Windows est marquée fortement comme
IMAGE_SUBSYSTEM_WINDOWS_CUI (Windows character-mode user interface (CUI) subsystem)
ou
IMAGE_SUBSYSTEM_WINDOWS_GUI (Windows graphical user interface (GUI) subsystem)
Il n'y a pas de solution miracle. Une appli marquée GUI n'aura pas de console par défaut (et si elle est lancée en ligne de commande, l'utilisation de la console n'écrira rien dans la console qui aura lancée cette appli), et une appli marquée par CUI aura toujours une console par défaut qui traîne si on la lance par l'explorateur.
Il existe juste quelques astuces qui permettent de résoudre partiellement, mais jamais complètement ce problème:
1) Si l'appli est marquée comme GUI (Winform), elle peut toujours créer sa propre console par l'API Windows AllocConsole
va ouvrir une fenêtre console, y écrire coucou et la fermer.
2) Si l'appli est marquée comme CUI (Console), et qu'elle a été lancée par l'explorateur, il est possible de masquer la fenêtre console "qui traîne".
Un bon exemple d'une telle application est ILDASM.EXE du .NET Framework, c'est une application marquée comme Console, mais qui montre aussi des fenêtres, et qui masque sa console dès qu'elle est lancée par l'explorateur.
Simon. www.softfluent.com
"Emmanuel Thiry" a écrit dans le message de news: %
Salut,
Je suis sous Windows XP et je voudrais faire à l'aide de Visual Studio 2005 une application à la fois Console et Windows, le comportement étant décidé par exemple en fonction d'un paramètre de la ligne de commande.
J'ai essayé de deux façons : 1) je crée mon appli en tant que "Window Application" et dans le Main j'appelle ou pas Application.Run(new Form1()); ça marche sauf que quand je lance l'appli depuis la ligne de commande Console.Write n'affiche rien 2) je crée mon appli en tant que "Console Application" et dans le Main j'appelle ou pas Form1 form = new Form1; form.ShowDialog(); ça marche aussi sauf que quand je lance l'appli, une fenêtre de console vide s'ouvre et reste ouverte tant que je ne ferme pas l'appli.