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

Java Discussion :

Arréter le Robot !


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 80
    Par défaut Arréter le Robot !
    Bonjour à tous,
    j'ai développé une petite appli pour simuler un utilisateur lambda cliquant sur des points precis grace a la classe Robot.

    Seulement je n'arrive pas à l'arréter et toutes mes tentatives de faire d'autres evènements que celui sur un bouton déclenchant le robot ont échoués.

    merci à tous.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Tu pourrais nous mettre ton code, parce que la c'est pas facile de trouver comment arreter une chose dont on ne sait pas grand chose(merde je me repete ^^)

  3. #3
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 80
    Par défaut
    tres bien ce que j'avais plus en tete c'était une idée général...

    voici le code du bouton qui lance le robot. merci encore



    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
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    		btnPos.addActionListener(new ActionListener()
    			{   
     
    				public void actionPerformed(ActionEvent evt)
    				{
    				  //Clic sur le bouton pour démarrer le robot
    				  if (iStatusOG == -1){						
    				  //status okay pour le lancer de robot
     
    					 //un moyen "pitoyable" d'arreter le robot...
    					 int nbrPage = 0;					 
    					 while(nbrPage<50){
     
    						 nbrPage++;
    						 try { 
    						  Robot r = new Robot();
    						  r.mouseMove(iOGX,iOGY);						  
    						  r.mousePress(InputEvent.BUTTON1_MASK); 
    						  r.mouseRelease(InputEvent.BUTTON1_MASK);						  
    						  r.mouseMove(iOGX,iOGY+150);
    						  r.delay(2500);
     
    						  r.keyPress(KeyEvent.VK_CONTROL);
    						  r.keyPress(KeyEvent.VK_A);
    						  r.keyPress(KeyEvent.VK_C);					
    						  r.keyRelease(KeyEvent.VK_A);
    						  r.keyRelease(KeyEvent.VK_C);
    						  r.keyRelease(KeyEvent.VK_CONTROL);
    						  r.delay(1000);
     
    						  Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    							try {
    							        // Vérification que le contenu est de type texte. 
    							        if( t!=null && t.isDataFlavorSupported(DataFlavor.stringFlavor) ) {
    							                String txt = (String)t.getTransferData(DataFlavor.stringFlavor);
    							                txt = (String)t.getTransferData(DataFlavor.stringFlavor);
    							                Traitement(txt);
    							        } 
    							} catch( UnsupportedFlavorException e1) {
    							} catch( IOException e2 ) {
    							}
     
    						r.delay(2500);
     
     
    						} catch (AWTException e) {  e.printStackTrace();}
    					} 					
    				}
    			  }
    			}
    		);

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    oula, en fait, tu voudrais pouvoir l'arreter en plein mouvement n'importe quand ?
    Ou tu veut tout simplement que ce soit la derniere fois qu'il le fasse, donc terminer la boucle ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Je me suis pas attardé sur le code mais l'arreter de boucler tu peux utiliser un boolean qui serait mis à la valeur d'arret soit par une condition du style if dans ta boucle ou par n'importe quel autre moyen tel que le clic d'un bouton mais dans ce cas la le booelan doit un attribut d'un objet pouvant etre accedé à la fois par ton modificateur et par ton "lecteur", le robot.
    Un moyen de l'arreter n'importe quand, est de mettre ton robot dans un thread et stopper ce thread quand tu veux plus du robot...

  6. #6
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 80
    Par défaut
    l'arréter n'importe quand avant les 50 fois mais en finissant la lecture de page en cours. je pensais pouvoir utiliser un evenement et modifier mon
    iStatusOG mais l'évènement n'est appellé qu'apres les 50 fois.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Donc tu as bien utilisé un second boutton pour modifier ta boucle, au niveau logic c'est parfait mais le probleme est au niveau des threads. En effet la gestion des actions engendrées par les evenements est fait sur un seul thread (enfin, j'imagine), ce qui implique qu'il va premièrement éxécuter ta boucle puis s'interesser apres à l'autre evenement lancé par ton boutton (c'est à dire effectivment apres les 50 pages). Il faudrait donc que tu mettes ton robot sur un autre thread.

    Pour de l'info sur les threads : http://java.sun.com/docs/books/tutorial/essential/threads/.

    Edit : Un truc qui peut perturber aussi lorsqu'on ne sait pas, c'est ce dire, j'ai mis un r.delay(long), il y a donc des moments de pause pendant lequel je peux appuyer, mais en fait toute la gestion des evenements est bloquée et à son reveil, le thread recommencera exactement au meme endroit c'est à dire juste en dessous de cette commande.

    Re-Edit : Je n'ai jamais utilisé robot bien que j'en connaisse les principes de bases. Je ne pense pas mettre trompé mais si vous voulez corriger/apporter des renseignements complementaires, n'hesitez pas! Come cela en plus j'apprendrais quelque chose.

  8. #8
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 80
    Par défaut
    les delays n'ont qu un seul but : que la commande CTRL+C s'execute bien sinon dans le presse papier je n'avais que la première page, l'execution du traitement est plus rapide que la mise dans le presse papier

    je transforme donc mon prog en thread

Discussions similaires

  1. [C#] [VS.NET] Arrêter le système
    Par patdez dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/07/2004, 14h35
  2. Arrêter une Thread brutalement!
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 21h29
  3. [DiVERS] -> Arrêter et redemarrer son programme ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/08/2003, 15h25
  4. Arrêter le PC
    Par Smortex dans le forum Assembleur
    Réponses: 5
    Dernier message: 31/12/2002, 10h48
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28

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