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

Publié par Ludwig dans tuto

Bonjour,
Il me semble que les plugins de gestion d'images sont payants pour TinyMCE et CKeditor, est-ce toujours le cas ?
Il manque amha l'excellent Xinha dans cette liste, qui lui est Open Sour...

Publié par tactictoe dans CMS

Erreur ligne 8 et 26:
Lire : Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\', false);
et non pas Reg.OpenKey('SoftwareMicrosoftInternet ExplorerMain', false);

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 vieux dans CMS

et comment ce le procurent ton ?

Publié par ZINEDDINE dans CMS

SaLUT Monsieur
tu peux avec ce deux mot pass ouvrir tous les tables paradox
1-jIGGAe
2-cupcdvum
respecter le majjuscul
bonne chance .