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

AWT/Swing Java Discussion :

Simuler l'appui sur une touche, au niveau système


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Simuler l'appui sur une touche, au niveau système
    Bonjour,

    J'aimerais pourvois simuler l'appui d'une touche par l'utilisateur, un peu comme le fait jButtton.doClick().

    Le vrai problème c'est que la touche (plus exactement séquence de touches) devrait être pris en compte par l'os, car cette touche n'a pas d'incidence sur mon application mais sur un programme résident.

    Pour essayer d'être plus clair: depuis un programme java, y'-a-t-il une solution pour simuler une séquence de touches de manière à activer une fonctionnalité d'un programme résident ?

    C'est un peu trabiscoté je sais

    J'ai regardé l'eventualité d'envoyer des "codes touches" à System.in, mais naturellement il n'ya pas de fonctions pour écrire dans un flux d'entrée ! ;-)

    Si quelqu'un a une idée pour résoudre ou contourner le problème, vraiment merci !!

    dj


    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    Essai du coté de la classe "Robot"
    Je ne sais pas si ca va faire ton bonheur, mais on ne sait jamais :-)
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Il existe pas mal d'implémentation sous forme de DLL de l'envois de touche ou l'interception de touche du clavier.
    Si tu trouve la bonne DLL documentée, tu pourras utiliser JNI pour l'utilisée mais attention à la portabilité de ton application !
    Pose la question sur le forum Delphi ou C++ pour trouver ce type de DLL.
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Remerciements
    Bonjour,

    Merci de vos réponses. Je vais de ce pas inspecter la classe "robot" et poser la question sur le forum C++.

    Cordialement,
    dj

  5. #5
    duj
    duj est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2003
    Messages : 141
    Points : 474
    Points
    474
    Par défaut
    Salut,

    la classe Robot devraity en efffet permettre de faire ce que tu veux.

    voici par exemple un programme qui tape du texte. Si pendant que tu le fais tourner, tu utilise un editeur de texte quelconque (qui a le focus), il tappera un message à ta place.


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class TestRobot extends Thread {
    	private static final int I = 200;
    	public static void main(String[] args) throws Exception {
     
    		new TestRobot().start();
     
    	}
    	public void run() {
     
    		Robot robot;
    		try {
    			Thread.sleep(3000);
    			robot = new Robot();
    			robot.keyPress(KeyEvent.VK_S);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_A);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_L);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_U);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_T);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_SPACE);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_G);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_R);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_O);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_S);
    			robot.keyPress(KeyEvent.VK_SPACE);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_C);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_O);
    			Thread.sleep(I);
    			robot.keyPress(KeyEvent.VK_N);
    			Thread.sleep(I);
    		} catch (AWTException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
    }
    Parfois, Google fait des miracles

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 18
    Points
    18
    Par défaut I Robot :-)
    Bonjour,

    Merci encore de vos réponses. En effet, Robot réponds parfaitement à ce que je veux faire :-) C'est beau l'entraide entre programmeurs

    J'espère que ce post en aidera d'autres,
    à bientôt,
    dj

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

Discussions similaires

  1. [AC-97] Simuler l'appui sur une touche
    Par 6ril25 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/08/2009, 12h23
  2. Réponses: 7
    Dernier message: 08/07/2009, 18h22
  3. Simuler l'appui sur une touche
    Par superted dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 23/05/2008, 14h06
  4. Simuler l'appui sur une touche sans évènement
    Par pc.bertineau dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2008, 16h40
  5. Réponses: 3
    Dernier message: 19/02/2007, 09h30

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