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 :

string to KeyCode pour la class Robot


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Points : 17
    Points
    17
    Par défaut string to KeyCode pour la class Robot
    Bonjour tout le monde.

    je voudrai faire genre de bot a l'aide de la class robot capable de cliquer la ou on lui demande et capable de tapper nimporte quelle chaine de carratere au clavier.

    Pour l'instant je m'attaque au clavier (la sourie semble plus simple).
    Ma classe étends de java.awt.Robot
    Je voudrai faire une méthode typeString(String str) qui tape au clavier la chaine passé en paramètre pour éviter de passer par les keycode car ça n'est pas très pratique par exemple pour taper "A" il faut faire :
    keyPress(KeyEvent.VK_SHIFT);
    keyPress(KeyEvent.VK_A);
    keyRelease(KeyEvent.VK_A);
    keyRelease(KeyEvent.VK_SHIFT);

    le probleme c'est comment passer d'un simple caratere en une suite de touche a taper en gerant majuscule et autre?
    J'ai chercher dans la doc java et un peu partout sur le net sans resultat alors si quelqu'un sait comment faire ou connait une lib capable de me faire ca ca serai simpa!

    voila le debut de ma class (ya pas grand chose mais ca donne l'idée) :
    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
    package robot;
     
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.KeyEvent;
     
    public class MyGeek extends Robot{
     
    	public MyGeek() throws AWTException {
    		super();
     
    	}
     
    	public void typeString(String str)  {
    		if(str!=null){
    			for (int i = 0; i < str.length(); i++) {
    				// c'est ici que je sais pas quoi mettre!!
    			}
    		}
    	}
     
    }

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Utilise la méthode "charAt" de java.lang.String pour traiter chacun des caractères.
    Ensuite regarde la table des variables utilisées.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Je sit bien que ca par d'une boucle sur tout les char des la string.

    Mais je cherche a savoir si il y a un moyen de trouver directement la combinaison de touche qui permet d'avoir un char car pour 'a' c'est simplement VK_A alors que pour 'A' il faut dabor presser VK_SHIFT puis VK_A puis relacher VK_SHIFT. et je ne te parle pas des ',' '/' et autre char speciaux. ca va faire un paquet de if ou alors une map de malade a construire à la main pour stoker tout les character et la combinaison qui va bien ...

    Puisque l'inverse ce fait naturellement (quand on presse une touche dans un JtextFeild ,il le transforme en char). j'imagine qu'on peut faire l'inverse mais je ne trouve pas comment ...

    Voila j'espere que vous voyez un peu mieu ce que j'essaye de faire ?

  4. #4
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    J'ai été confronté au même problème, et en fait, pourquoi tu ne copies pas ce que tu veux écrire dans le presse papier et tu le colles via le masque "ctrl+v" ?

    Voici une solution qui fonctionne (pour moi en tous cas), qui fait un alt+tab, qui attend 2 secondes, et qui colle ce que je veux coller :

    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
     
    public class MaClasse
    {
    	public static void writeClipboard(String text)
    	{
    		try 
    		{
    	        StringSelection ss = new StringSelection(text);
    	        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,null);
    		} 
    		catch( IllegalStateException e) 
    		{
    		        /** Le presse-papier n'est pas disponible */
    		} 
     
    	}
     
        public static void main(String[] args)
        {
        	try
        	{
    	    	Robot r=new Robot();
     
    	    	writeClipboard("test@,;:!^");
     
    	    	r.keyPress(KeyEvent.VK_ALT);
    	    	r.keyPress(KeyEvent.VK_TAB);
     
    	    	r.keyRelease(KeyEvent.VK_TAB);
    	    	r.keyRelease(KeyEvent.VK_ALT);
     
    	    	r.delay(2000);
     
    	    	r.keyPress(KeyEvent.VK_CONTROL);
    	    	r.keyPress(KeyEvent.VK_V);
     
    	    	r.keyPress(KeyEvent.VK_V);
    	    	r.keyPress(KeyEvent.VK_CONTROL);
     
    		}catch(Exception e)
    		{
     
    		}
           }
    }
    Voili voilou

    F.
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/04/2005, 22h23
  2. [css] Même style pour 2 classes diffs ?
    Par AlphaYoDa dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/03/2005, 22h29
  3. Réponses: 26
    Dernier message: 26/01/2005, 15h53
  4. ecrire un iterateur pour une classe
    Par Blowih dans le forum C++
    Réponses: 2
    Dernier message: 15/11/2004, 19h19
  5. package ambiguïté pour des classes de même nom
    Par soad dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2004, 19h25

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