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

Publié par pacman dans java

thanks for sharing, that s great!

Publié par Fobec dans news

Votre message a ete deplace sur le forum, ce sera plus facile pour en discuter.
http://www.fobec.com/forum/correspondance-entre-adresse-ipv4-adresse-ipv6-t1146.html

Publié par Fobec dans php5

En effet, Twitter a modifie la structure de son API. P'etre qu'un jour, on trouve le temps pour finaliser un wrapper pour la version 1.1

Publié par Fobec dans news

Bonjour,
la localisation des adresses ip utilise plusieurs algo de recherche de position geographique. La precision du rapport d'analyse correspond la qualite de la localisation:
9/10 la locali...

Publié par Fobec dans java

oups quelques lignes manquent sur ce code ! ... l'exemple est corrige et complet
Merci Tom