Windows Form depuis application appli Console

RegVB Messages postés 81 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 6 février 2009 - 28 févr. 2008 à 15:18
thepoe Messages postés 30 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 1 juin 2011 - 1 juin 2011 à 19:29
Bonjour,

J'ai une application console depuis laquelle je peux être amené à exécuter une Windows Form. Si cela arrive, je voudrais que l'application rende la main en console.
Par exemple : je lance monappli.exe dans une cmd, elle exécute la Windows Form et rend la main en console bien que la Windows Form soit dispo.

Pour cela j'ai testé System.Threading.Thread mais l'appli console reste toujours en attente de fermeture de la form. Avez vous une diée de la méthode à employer ?

Merci pour votre aide
A voir également:

9 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 mars 2008 à 22:26
Salut,

Logiquement tu vas devoir (avec sans doute d'autres choses) lancer la boucle de pompage des messages Windows.
Voir Application.Run() notamment.

/*
coq
MVP Visual C#
CoqBlog
*/
0
RegVB Messages postés 81 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 6 février 2009
3 mars 2008 à 10:03
Bonjour,

Effectivement. Je fais comme suit :
static void Main(string[] args)
{
    if (args.Length > 0)
    {
          Thread thread;
           thread = new Thread(new ThreadStart(WinForms));              
           thread.Start();               
      }
      else { //Je lance mon application console classique}
}

ET
        public static void WinForms()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new myWinForm());
        }

Mais si j'exécute cela, la console reste en attente jusqu'à ce que la WinForm soit fermée

Une idée peut être ? En tout cas merci d'avoir répondu.

Reg
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
7 mars 2008 à 23:05
Logiquemment non, qu'est ce que tu appelles "en attente" ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
RegVB Messages postés 81 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 6 février 2009
11 mars 2008 à 17:47
Bonjour,

Je suis de retour et je m'explique. J'exécute une Windows Form depuis un projet Console. J'ai donc ajouté une Form et lorsque je passe un certain paramètre en ligne de commande je voudrai charger la fenêtre Windows et donc que mon application ne se comporte plus comme une appli console. Sauf que la CMD est toujours derrière en attente de fermeture de la fenêtre Windows.

J'espère être clair
Et je voudrais bien que la CMD n'attende plus.

Reg
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 mars 2008 à 00:46
Qu'elle ne soit plus visible ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
RegVB Messages postés 81 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 6 février 2009
15 mars 2008 à 22:13
Non, que la CMD rende la main.Maisplus j'y pense et plus je me dis que cela n'est pas possible étant donné que ma Form fait parti de mon projet, c'est comme si l'appli se fermait en laissant un morceau actif... Me trompe-je ?
0
thepoe Messages postés 30 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 1 juin 2011
1 juin 2011 à 14:54
Salut, j'ai fait de mon coté un truc comme ca (avec un new thread).
Par contre, la console ne se ferme pas tant qu'il y a une form ouverte.
Enjoy evbdy...

Imports System.Threading
Imports System.Windows.Forms

Module Module1
    Private thrd As New Thread(AddressOf thrdForm1)
    Sub Main()
        thrd.Start()
        Console.WriteLine("Debut")
        Thread.Sleep(10000)
        Console.WriteLine("traitement")
        Thread.Sleep(10000)
        Console.WriteLine("Fin du main")
    End Sub
    Sub thrdForm1()
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        Application.Run(New Form1()) 'ici Form1 est ne nom de la form a ouvrir
    End Sub
End Module
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
1 juin 2011 à 15:04
Bonjour,

C'est un forum C#, merci de poster des bouts de code en C# !

 
using System.Threading;
using System.Windows.Forms;

public class Program1
    private Thread thrd = new Thread(thrdForm1);
    
    public void Main() {
        thrd.Start();
        Console.WriteLine("Debut");
        Thread.Sleep(10000);
        Console.WriteLine("traitement");
        Thread.Sleep(10000);
        Console.WriteLine("Fin du main");
    } 

    public void thrdForm1()
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());  //ici Form1 est ne nom de la form a ouvrir
    }
}



Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
0
thepoe Messages postés 30 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 1 juin 2011
1 juin 2011 à 19:29
Salut,
Je suis vraiment désolé, je fait toujours mes demos en vb, j'ai oublié de vous la passer en C#.
Merci d'avoir corrigé, @+
0
Rejoignez-nous