Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une détection de touche C#

    23 juillet 2017 à 19:25:51

    Bonjour, je cherche à faire pour les besoins d'un logiciel, une détection de touche.

    Du style : Si la touche 1 du clavier numérique est enfoncer afficher un message.

    Il faut que la détection se fasse en boucle ( obligatoire ) pouvez-vous m'aider ?

    • Partager sur Facebook
    • Partager sur Twitter
      23 juillet 2017 à 19:42:40

      Bonjour,

      Qu'en est-il de tes recherches ? As-tu essayé quelque chose ?

      • Partager sur Facebook
      • Partager sur Twitter
      MysteryDash / 100 MPM / Développeur Freelance C#.NET / osu! / PS4 Offline Remote Play
        23 juillet 2017 à 20:33:32

        C'est pas pour dire, mais j'ai l'impression que de moins en moins de gens cherche avant de poser une question... ne voyez pas cela comme une critique, mais plutôt comme un constat !

        sinon, pour ne pas faire le rabat-joie, voici une piste :

        If (e.KeyChar = Chr(Keys.X)){
           'Action sur la touche X
        }

        et pour la boucle, bhas... Do loop..

        -
        Edité par vanaur 23 juillet 2017 à 20:34:28

        • Partager sur Facebook
        • Partager sur Twitter

        Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

          23 juillet 2017 à 21:54:54

          Bonsoir oui j'ai cherché pas mal justement et je ne comprend pas !

          If (e.KeyChar = Chr(Keys.X)){
             'Action sur la touche X
          }

          J'ai déjà vu des codes similaires sur google aujourd'hui malheureusement je n'arrive pas à le mettre en pratique !

          Je sais qu'il y'a 4 ans j'avais réussi un code comme celui-ci dans un timer qui faisait afficher un message si j'appuie sur une touche spécifique malheureusement j'ai perdu toutes mes sources du coup je dois tout recommencer et comme je n'ai plus rien depuis 4 ans autant vous dire que j'ai du mal !

          -
          Edité par nirvana06 23 juillet 2017 à 21:55:21

          • Partager sur Facebook
          • Partager sur Twitter
            23 juillet 2017 à 22:08:08

            Déjà qu'on ne sait même pas si tu fait un programme fenêtre (Winform? WPF?) ou Console ...

            Bref explique correctement ce que tu cherches à faire et donne ton code existant?

            • Partager sur Facebook
            • Partager sur Twitter
            ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
              23 juillet 2017 à 22:34:01

              breizhbugs a écrit:

              Déjà qu'on ne sait même pas si tu fait un programme fenêtre (Winform? WPF?) ou Console ...

              Bref explique correctement ce que tu cherches à faire et donne ton code existant?


              Je cherche à un faire un logiciel pour switcher de fenêtre avec une touche ( winform )

              J'arrive à récupérer les processus ouvert, les trié par nom et par ID dans une listbox et à les afficher au 1er plan avec un button 

              try
                          {
                              int id = Convert.ToInt16(label3.Text.ToString());
                              Process p = Process.GetProcessById(id);
                              ShowWindow(p.MainWindowHandle, ShowWindowEnum.Show);
                              SetForegroundWindow(p.MainWindowHandle);
                          }
                          catch
                          {
                          }

              Maintenant ce que j'essaye de faire c'est de faire une détection de touche pour que quand j'appuie sur ma touche 1 du pavé numérique ( par exemple ) ce code indiquer au dessus s'éxécute

              -
              Edité par nirvana06 23 juillet 2017 à 22:34:15

              • Partager sur Facebook
              • Partager sur Twitter
                24 juillet 2017 à 0:08:39

                Et, c'est sur quel objet que tu veux que la détection de pression de touche s'applique ?

                Sinon, simplement ça devrait convenir : 

                if (e.KeyCode == Keys.Pav1){	//je ne me souvient plus du nom 'Pav1', donc à changer
                	int id = Convert.ToInt16(label3.Text.ToString());
                        Process p = Process.GetProcessById(id);
                        ShowWindow(p.MainWindowHandle, ShowWindowEnum.Show);
                        SetForegroundWindow(p.MainWindowHandle);
                }

                Je ne vois pas où tu bloque en fait :/

                • Partager sur Facebook
                • Partager sur Twitter

                Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                  24 juillet 2017 à 0:52:58

                  Loin de moi l'idée de dénigrer une idée de projet mais c'est quoi le problème avec le Alt+Tab classique ?

                  Non parce que ça à plus l'air de te prendre la tête que d'être amusant cette affaire.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
                    24 juillet 2017 à 11:48:59

                    Bonjour après mettre creuser la tête j'arrive à résultat qui marche mais pas à 100% !

                    Je m'explique dans ma form load j'ai mis ceci 

                    Thread TH = new Thread(Keyboardd);
                                TH.SetApartmentState(ApartmentState.STA);
                                CheckForIllegalCrossThreadCalls = false;
                                TH.Start();

                    Puis :

                     void Keyboardd()
                            {
                                while (isRunning)
                                {
                                    Thread.Sleep(40);
                                    if ((Keyboard.IsKeyDown(Key.NumPad0)))
                                    {
                                        label25.Text = "hi";
                                    }
                                    else
                                    {
                                        label25.Text = "hello";
                                    }
                                }
                            }


                    Note : Les labels sont la uniquement pour les test.

                    Mon problème maintenant c'est que lorsque la fenêtre n'est plus au 1er plan ça ne détecte pas, comment le faire détecter en permanence ?

                    Pyrobolser a écrit:

                    Loin de moi l'idée de dénigrer une idée de projet mais c'est quoi le problème avec le Alt+Tab classique ?

                    Non parce que ça à plus l'air de te prendre la tête que d'être amusant cette affaire.


                    Le alt tab ne m'intéresse pas j'ai besoin d'une seule touche pour ouvrir les fenêtre dans un ordre précis qui peux changer à tout moment hors le alt tab ne répond pas à mes attentes.

                    -
                    Edité par nirvana06 24 juillet 2017 à 11:52:05

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 juillet 2017 à 12:40:01

                      Et bien en utilisant le BackGroundWorker, je pense que cela pourrait résoudre le problème, maintenant je ne connais pas trop cette objet...

                      -
                      Edité par vanaur 24 juillet 2017 à 12:41:03

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                        24 juillet 2017 à 13:46:30

                        J'y ai pensé et déjà fais plusieurs test avec le backgroundworker mais le problème c'est qu'il exécute le code sur un thread différent ( de ce que j'ai compris ) du coup ça ne fonctionne pas, je me retrouve avec une erreur.

                        -
                        Edité par nirvana06 24 juillet 2017 à 13:47:07

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 juillet 2017 à 13:56:09

                          Comme je l'ais dis, je ne connais pas trop le BackGroundWorker, donc je ne serais pas t'apporter une aide efficace à propos de cet élément, néanmoins, je peux te donner un petit tutoriel qui explique comment accomplire un tâche de fond en VB.NET.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                            1 août 2017 à 17:02:28

                            Sortez la tête du guidon, SVP.

                            Mot magique HotKey

                            https://stackoverflow.com/questions/2450373/set-global-hotkeys-using-c-sharp

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                            Créer une détection de touche C#

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown