IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

IHM + mode console : cacher la console


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut IHM + mode console : cacher la console
    Bonjour,

    je développe une petite application C# qui a pour objectif de se lancer soit en mode console, soit en mode graphique.

    Je désire faire en sorte que si aucun arguments n'est passé (ou si on double clique sur le .exe), l'application se lance en mode graphique et si on passe des arguments, elle reste en mode console...

    Mon problème se situe au moment du double clic, une invite de commande CMD reste affiché en arrière plan et j'aimerais qu'elle ne soit pas visible...

    En gros voila a quoi ressemble mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static int Main(string[] args){
     
    	if(args.Length !=0){
    		//code en mode console
    	}
            else{
    	       // on lance l'appli
    	       System.Windows.Forms.Application.Run(new IHM());
    	}
    }

    Merci pour vos réponses.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Points : 301
    Points
    301
    Par défaut
    cree un service windows

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Aurais-tu un peu plus de précision sur les services windows ?

  4. #4
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Points : 301
    Points
    301
    Par défaut
    desole on m en a parle je n y connais rien je sais juste que c est ce qu il faut que tu utilises il faut que tu cherches toi meme sur le net

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Après des recherches sur le net et quand même quelques tests, les services windows ne semble pas convenir à mon problème... En effet je ne souhaite pas réaliser une application qui tourne en continu (comme c'est apparemment le but des servies windows).

    Mon application sert à générer des squelettes de rapport sous word. L'utilisateur passe 2 paramètres (en mode console) pour choisir le type de rapport et s'il n'en passe pas, le mode graphique est lancé (avec plus de possibilités).

    Je souhaiterais juste rendre invisible la fenêtre MS-DOS lorsque je suis en mode graphique et j'ai l'impression que me mettre à coder un service windows pour ce genre d'application est beaucoup trop lourd.

    J'ai testé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Process p = Process.GetCurrentProcess();
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    trouvé sur ce post : http://www.developpez.net/forums/sho...d.php?t=225978

    mais rien de concluant...


    Quelqu'un aurait une idée ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Bon, salut

    Si tu veux avoir une fenetre dos.. tu as deux possibilités

    Soit tu fais 2 applications

    Soit tu fais une seule applications du type Console et suivant le mode choisi,
    tu fais soit un Run(New Form) soit ta console de base dans le main
    (le desavantage sera la fenetre "Noir" Dos Console de visible )

    Maintenant, si tu veux avoir la console Dos affichée MEME si tu es en mode graphique (si si, c'est tout à fait possible)... il faut que tu regardes du coté de l'Api Win ShowConsole()...

    Cette API te permet d'afficher la console depuis une application et d'y saisir des informations avec les fonctions Console.Write() .read du framework

    Bref, assez simple

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Salut the Monz,

    Soit tu fais une seule applications du type Console et suivant le mode choisi,
    tu fais soit un Run(New Form) soit ta console de base dans le main
    (le desavantage sera la fenetre "Noir" Dos Console de visible )
    C'est exactement mon problème... j'aimerais que cette fenêtre noire n'apparaisse pas.

    Quant à faire 2 applications, j'y est pensé mais j'aimerais pouvoir passer juste au travers de ce "petit" problème d'affichage de fenêtre noire plutôt que de doubler mon code...

    Cependant j'ai remarquer autre chose qui pourrait peut-être aiguillé qqun sur une solution :
    - quand je crée un projet application console, j'ai ce pb de fenêtre noire
    - quand je crée un projet application windows (dc pour gérer les Forms) elle n'apparaît pas mais je n'ai rien qui s'affiche dans ma fenêtre dos en mode ligne de commande (par exemple j'aimerais qu'avec le paramètre -h, une aide s'affiche à l'aide d'un Console.WriteLine(...) dans mon code).

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void Main(string args[]){
         if(args.length == 0){
              Run(new Form());
         }
         else if(args[0] == "-h"){
               Console.WriteLine("Affichage de l'aide");
         }
         else{
              //code en mode ligne de commande
         }
    }//main

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ok

    utilise api Win32 AllocConsole() exemple sur allapi.net ou pinvoke.net

    voila

    et apres, c comme j'ai expliqué plus haut

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci The Monz !!

    Voila le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;//pour faire appel à DllImport
     
    public class Class1{
         public static void Main(string args[]){
              if(args.length == 0){
                   Win32.FreeConsole();
                   Run(new Form());
              }
              else if(args[0] == "-h"){
                    Console.WriteLine("Affichage de l'aide");
              }
              else{
                   //code en mode ligne de commande
              }
         }//main
    }
     
     
    public class Win32{
          [DllImport("kernel32.dll")]
          public static extern Boolean FreeConsole();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cacher la console dos
    Par Jbx 2.0b dans le forum SDL
    Réponses: 5
    Dernier message: 09/10/2009, 12h15
  2. Comment cacher la console ?
    Par Niak74 dans le forum wxWidgets
    Réponses: 10
    Dernier message: 10/02/2009, 14h51
  3. Réponses: 0
    Dernier message: 26/03/2008, 11h20
  4. cacher la console
    Par doderic dans le forum Windows
    Réponses: 3
    Dernier message: 05/01/2008, 17h40
  5. Cacher la console sous VC++
    Par johnnydepp dans le forum Visual C++
    Réponses: 8
    Dernier message: 15/05/2007, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo