none
Pas de retour printScreen + Console.ReadKey RRS feed

  • Question

  • Bonjour à tous,

    J'ai un petit problème : je dois effectué une application console qui vérifie que si un process est en cour, bloque l'accès à certaine touche (ou action) du clavier.

    En l'occurrence, le bouton printScreen ici :

    j'ai donc le morceau de code ci-joint:

    ConsoleKeyInfo input;
    do
    {
      if(Process.GetProcessesByName("NotePad").length>0)
      {
        input = Console.ReadKey(true);
        Console.WriteLine("Vous avez appuyé sur : {0}", input.Key.toString());
        if (input.Key == ConsoleKey.PrintScreen)
          {
            // Désactiver l'action de la touche
          }
      }
    }While(true);

    Et donc au moment du WriteLine pour voir la touche sur laquelle j'ai cliqué, quand j'appuie sur "impr écran" lors de l'exécution du programme, rien ne s'affiche.

    Donc voila, je suis bien bloqué à ce niveau et je n'arrive pas a comprendre pourquoi.

    Merci d'avance en espérant que quelqu'un ai une solution.

    PS: Je rappelle que je travaille sur une application Console, les solutions existent en windows.form, mais le but n'est pas de travailler sur mon application mais sur d'autre.

    vendredi 19 octobre 2012 12:44

Réponses

  • Bonjour,

    De toute façon, un process n'accède qu'aux touches qui le concerne donc si on appuie sur PrintScreen dans notepad Console.ReadKey n'en sera absolument pas averti (et à priori la console ne le verra peut-être même pas si active car PrintScreen a de toute façon sans doute déjà été traité en amont par Windows).

    Il doit y avoir moyen de mettre en place un "hook" qui permet d'intercepter les touches sur Windows (en descendant au niveau de l'API Windows). Sur le plan du principe vérifier que votre approche est réaliste. Apparemment on ne veut pas que l'utilisateur puisse prendre une copie d'écran via PrintScreen mais un simple logiciel de capture permettra de contourner ce point (ou prendre une photo par exemple). Je ne sais pas quel est le but exact, mais un moment il est bon de faire confiance ;-)

    Si votre objectif semble pouvoir être atteint je pensais à qq chose comme http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera lundi 22 octobre 2012 06:46
    vendredi 19 octobre 2012 14:55
    Modérateur

Toutes les réponses