Comment se "connecter" au clavier

Fermé
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 - Modifié par Skymer le 10/10/2016 à 17:29
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 13 oct. 2016 à 20:40
Bonjour KX (désolé si vous me répondez et que vous n'êtes pas KX, mais dans la section java il n'y a que lui donc, je ne me fais pas de souci ^^), alors là je bosse sur une appli avec javafx, mais le problème que je rencontre, c'est que je voudrais que une fenêtre s'affiche avec une pression sur Alt + Tab.
Vu que tu me dis que je ne suis jamais assez clair :
Je voudrais savoir comment faire pour que mon programme soit constamment à l'écoute de mon clavier.
PS : il n'y a RIEN à voir avec javafx ... Il faut que la fenêtre dans javafx soit ouverte pour pouvoir "capter" les frappes de clavier ... Comme avec les JFrames d'ailleurs

Skymer

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 oct. 2016 à 21:02
Bonsoir,

Comme indiqué dans tes précédentes discussions, je n'ai jamais travaillé en JavaFX donc il va falloir te débrouiller avec la documentation, ou laisser un peu de place à d'autres intervenants CCM que tu exclues implicitement en t'adressant directement à moi...

https://docs.oracle.com/javafx/2/events/handlers.htm
1
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75
11 oct. 2016 à 18:40
Bonjour, merci de relire ENTIEREMENT ma question, et ne pas s'arrêter sur le mot javafx, je cite :
"PS : il n'y a RIEN à voir avec javafx ... Il faut que la fenêtre dans javafx soit ouverte pour pouvoir "capter" les frappes de clavier ... Comme avec les JFrames d'ailleurs"
Ok, alors mets moi le code avec une JFRAME, j'ai dit que je me FOUTAIS du type de la fenêtre, je te demande comment faire pour que mon programme (en console par exemple) détecte tout le temps les pressions sur les LETTRES de mon CLAVIER, sans passer par une jframe, ni un scanner, vu qu'il faut APPUYER / ÊTRE en RELATION avec un composant graphique pour pouvoir accéder aux lettres tapées.
Merci de votre compréhension, et Get Rekt:)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
11 oct. 2016 à 18:58
"merci de relire ENTIEREMENT ma question, et ne pas s'arrêter sur le mot javafx"
Je l'ai lu, et n'imposes pas tes conditions quant au traitement de ta question, sinon ça va être vu...

"mon programme (en console par exemple) détecte tout le temps les pressions sur les LETTRES de mon CLAVIER"
C'est impossible, la console n'appartient pas au programme, elle communique par flux (System.in/out/err) avec lui, et ne lui renvoie aucune autre information.

"vu qu'il faut APPUYER / ÊTRE en RELATION avec un composant graphique pour pouvoir accéder aux lettres tapées"
Evidemment, c'est le principe même de la programmation événementielle, cette contrainte est d'ailleurs directement imposée par le système d'exploitation.

"j'ai dit que je me FOUTAIS du type de la fenêtre"
Pourtant chaque technologie est différente. Et si tu relisais à ton tour ma réponse, tu aurais vu le lien sur la documentation officielle avec des codes à l'appui.
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
12 oct. 2016 à 20:52
"C'est impossible, la console n'appartient pas au programme, elle communique par flux (System.in/out/err) avec lui, et ne lui renvoie aucune autre information."
Et donc comment les keyloggers fonctionnent (pour exemple, le programme que je veux faire n'a RIEN à voir ....) ?? ? Je crois qu'il faut créer un pilote qui joue le rôle d'intermédiaire entre l'ordinateur et les touches du clavier ce qui permet de les détecter ..
0
Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018 75 > Skymer Messages postés 477 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 novembre 2018
13 oct. 2016 à 19:01
Mais ce que je vais faire : soi utiliser un plugin java, ou créer un programme en C et donc apprendre le langage ci-dessus ...

Tu penses que ce serait plus instructif de commencer à apprendre mon deuxième langage de programmation mtn ? (je compte faire : java > C > C++ > HTML > JavaScript.. Pour l'instant, cela te paraît correct ?)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
13 oct. 2016 à 20:40
"comment les keyloggers fonctionnent (...) Je crois qu'il faut créer un pilote qui joue le rôle d'intermédiaire entre l'ordinateur et les touches du clavier"
Oui, c'est ça, sauf que Java s'exécute dans une machine virtuelle donc les privilèges accordées au programme Java sont ceux qui ont été eux même accordés par le système d'exploitation à la machine virtuelle, donc on ne peut pas tout faire.
Sauf si... on contourne la machine virtuelle en appelant directement du code système, par exemple accessible via des DLL sous Windows.
J'ai un exemple ici : https://forums.commentcamarche.net/forum/affich-29706599-creer-une-bufferedimage-sur-la-fenetre-active#3
Il s'agissait d'utiliser les fonctionnalités de Windows pour savoir quelle est l'application active (même si ce n'est pas le programme Java) et en faire une impression écran. Avec ce genre de technologie on peut faire une interception des événements Windows par exemple avec Using Keyboard Events (je n'ai pas testé)
Evidemment on n'est plus multiplate-forme, là c'est la méthode pour Windows, ce serait forcément du code très différent pour Linux, Mac etc. Mais c'est possible de rester dans un programme Java quand même.

"plus instructif de commencer à apprendre mon deuxième langage de programmation mtn ? (je compte faire : java > C > C++ > HTML > JavaScript"
Tout dépend tes objectifs en terme de programmation, ce que tu as vu en Java n'est que la partie immergée de l'iceberg, il y a énormément de concepts Java supplémentaire que tu pourrais aussi apprendre, je pense à Java EE et "donc" les applications Java orienté côté serveur et introduire les langages HTML, JavaScript, XML, etc.
0