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 9537 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par medfayz dans java

hi everybody thanks for the code , and please can any one help me to fix that exception.
javax.media.NoPlayerException: Cannot find a Player for :vfw:0

thanks

Publié par pacman dans java

thanks for sharing, that s great!

Publié par hilflo dans tuto

Pour Romaingineer, essaye d'aller voir dans le fichier functions.php dans ton theme, tu dois avoir des functions wp_enqueue_style ou wp_enqueue_script, c'est la que tu pourras faire des modifs

Publié par nicolasterraes dans tuto

bonjour,
je ne comprends pas cette tape:

Les liens vers les feuilles de style et les fichier js sont declares dans les pages HTML. Modifiez les balises meta ainsi:
Feuille de style:
d...

Publié par Fobec dans php5

Merci Souti d'avoir signale la balise manquante,
le code est corrige dans l'exemple.