Publié le 06/01/2011
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
2 commentaires

Simuler l'appui d'une touche du clavier

Comment simuler keybd_event ou SendKeys en JAVA ? La fonction robot.keyPress envoie un évènement clavier en simulant l'appui d'une touche. Le résultat est exactement le même que lorsque l'utilisateur appuie sur une touche de son clavier.

Envoyer un evenement clavier

L'exemple SendKey ouvre l'application Notepad.exe sous Windows et se charge d'écrire 'axel' en envoyant les 4 lettres une à une.
import java.awt.AWTException
import java.awt.Robot
import java.awt.event.KeyEvent
import java.io.IOException
import java.util.logging.Level
import java.util.logging.Logger
 
/**
 * Ouvrir et écrire dans NotePad
 * @author fobec.com 2010
 */
public class SendKey {
 
    public SendKey() {
        /**
         * Lancer NotePad sous Windows
         */
        try {
            Runtime.getRuntime().exec("notepad");
        } catch (IOException ex) {
            Logger.getLogger(SendKey.class.getName()).log(Level.SEVERE, null, ex);
        }
/**
 * Ecrire dans NotePad
 */
        try {
            Robot robot = new Robot();
            /**
             * Fixer le delai entre chaque mouvement à 250 ms
             */
            robot.setAutoDelay(250);
            robot.setAutoWaitForIdle(false);
            /**
             * Envoyer les touches axel une à une
             */
            robot.keyPress(KeyEvent.VK_A);
            robot.keyPress(KeyEvent.VK_X);
            robot.keyPress(KeyEvent.VK_E);
            robot.keyPress(KeyEvent.VK_L);
            /**
             * Quitter l'application
             */
            System.exit(0);
 
        } catch (AWTException ex) {
            Logger.getLogger(SendKey.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    public static void main(String[] args) throws AWTException, IOException {
        SendKey sendKey = new SendKey();
    }
} 

Cette méthode peut etre utilisée pour automatiser certaines taches. Par exemple, une application JAVA simule une saisie clavier en envoyant une série de caractère.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar Daxentuut

Publié par Daxentuut

le 06/03/2013 à 16:32:47

Avec les imports c'est mieux :

import java.awt.AWTException
import java.awt.Robot
import java.awt.event.KeyEvent
import java.io.IOException
import java.util.logging.Level
import java.util.logging.Logger

avatar OmegaPlatypus

Publié par OmegaPlatypus

le 05/08/2013 à 11:08:35

Dans mon cas, plusieurs lettres etaient repetes plusieurs fois, dont la derniere a l'indfiniment. En ajoutant robot.keyReleaseKeyEvent.VK_A, robot.keyReleaseKeyEvent.VK_X, etc. apres chacune des frappes, le probleme est resolu.

A noter aussi que la methode Runtime.getRuntime.exec fonctionne parfaitement sous linux, avec en parametre gedit par exemple. On peut egalement passer des parametres :Runtime.getRuntime.execgedit info.txt

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
06/01/2011
Visualisation
vu 9559 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans php5

Le code PHP sur les boucles a ete corrige dans l'article.
Merci Etiazam !

Publié par fffffff dans php5

comment est-ce que les joueurs s'inscrivent, utilisez-vous PHP ?

Publié par nico dans java

Petite erreur constate.
Apparemment il faut remplacer :
&mailTo = &?body=Envoyer un email avec Java
par &mailTo = < et commercial sans '<' et '>' &body=Envoyer un email avec Java

Publié par Oscar dans java

Je vous remercie pour ce tuto il ma permis non seulement de gerer les couleurs dans les cellules mais aussi de positionner son contenu texte.

Publié par diet dans CMS

Mais programme-dietetique.com est un site. En logiciel il y a diettesettics.com