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

C# Discussion :

Fermer une application console avec la saisie d'une touche au clavier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut Fermer une application console avec la saisie d'une touche au clavier
    Voila mon problème:
    j'ai une application console qui permet de faire des tests sur une autre applications. cette application simule des clics sur l'interface.

    mon problème est que j'aimerais pouvoir l'arrêter à n'importe quelle moment avec la saisie d'une touche (ex : la touche echap ou F1).

    de plus l'appli est lancé depuis un script perl donc je n'ai pas la fenêtre de d'invite de commande qui se lance.

    j'ai trouvé les KeyEvent mais cela fonctionne uniquement pour les Form. Il y a ensuite les global hook mais je n'ai pas vraiment compris si cela correspond à mon problème.

    es ce qu'il existe une solution simple pour envoyer un Environment.Exit a mon application en appuyant sur Echap (ou autre touche)?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    mets un truc comme ça dans la boucle de ton appli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (Console.KeyAvailable)
    {
        ConsoleKeyInfo keyInfo = Console.ReadKey();
        if (keyInfo.Key == ConsoleKey.Escape)
        {
            Environment.Exit(0);
        }
    }

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut
    merci mais je n'ai pas de boucle. mon programme est une suite de commande qui se suive.
    je ne sais pas comment mettre le code. il faudrait qu'il y est un process qui écoute le clavier en permanence.

    ensuite l'arret du programme fonctionne si on appuie sur la touche echap avec le focus sur la console.


    ensuite j'ai eu l'idee de mettre un bouton quitter dans une form et de lui faire quitter toute l'appli. c'est surement plus simple à programmer.
    par contre je ne comprends pas pourquoi je n'ai pas la form et la console qui marche en même temps!!!
    help!!! je pense qu'il faut lancer la form dans un thread mais je n'arrive pas à trouver comment faire.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut
    ma form :
    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
    class BoxStop : Form
        {
            private Button stop = new Button();   
            public BoxStop() {
                Text = "Stop TestAutomatique";
                stop.Text = "Stop";
                stop.Click += new EventHandler(OnClickStop);
                Controls.Add(stop);
                this.ShowDialog();
            }
     
            public void OnClickStop(object sender, System.EventArgs e)
            {
                Environment.Exit(Environment.ExitCode);
            }
     
            public void StopTestGetEchap(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    Environment.Exit(Environment.ExitCode);
                }
            }
        }
    je la creer dans mon main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            static void Main(string[] args)
            {
     
                System.Windows.Forms.Application.Run( new BoxStop());
                InitialisationConfig(); 
    ....

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    euh, je comprends plus rien là... c'est pas une appli console en fait, si t'as une form

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut
    mon problème est que je lance une application console en tache de fond (lancer depuis un script perl) et que je n'ai pas la fenêtre de console pour arreter l'exécution de l'application console.

    ma première idée était de l'arrêter avec une touche du clavier mais il faut que la touche soit intercepté à tout moment par le programme.

    ma seconde idée est de créer une petite fenêtre avec un simple bouton stop, ce qui me permettre d'arrêter l'exécution de l'application console en cliquant dessus.

    es ce que l'on peut avoir une form et l'application console qui tourne en meme temps?

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/03/2010, 16h03
  2. Créer une application console avec C::B 8.02
    Par alhamdolillah dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 26/12/2009, 19h24
  3. Réponses: 0
    Dernier message: 26/03/2008, 11h20
  4. Réponses: 3
    Dernier message: 16/01/2008, 17h47
  5. Réponses: 8
    Dernier message: 20/06/2007, 13h19

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