Automatiser la copie d'une sélection de texte
Résolu
KX
Messages postés
19031
Statut
Modérateur
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je cherche à faire un copier-coller d'un texte sur une console assez rustique. Pour cela on peut sélectionner un texte en restant appuyé sur la touche Shift et en se déplaçant avec les flèches, ensuite on peut faire la copie avec un Ctrl+C.
Je suis parti du côté de la classe Robot en Java. Pour le déplacement du curseur et le Ctrl+C ça fonctionne, mais je n'arrive pas à automatiser la combinaison Shift+flèche.
Voici un code de test :
Si vous des idées pour régler ce problème (ou le contourner) je prends, sachant que bien sûr on ne peut pas tout faire sur ce genre de console.
Merci d'avance.
Je cherche à faire un copier-coller d'un texte sur une console assez rustique. Pour cela on peut sélectionner un texte en restant appuyé sur la touche Shift et en se déplaçant avec les flèches, ensuite on peut faire la copie avec un Ctrl+C.
Je suis parti du côté de la classe Robot en Java. Pour le déplacement du curseur et le Ctrl+C ça fonctionne, mais je n'arrive pas à automatiser la combinaison Shift+flèche.
Voici un code de test :
import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.event.KeyEvent; public class Test { public static void main(String...args) throws Exception { // Initialisation Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Robot robot = new Robot(); System.out.println("5 secondes pour placer le curseur au début du texte"); Thread.sleep(5000); // On maintient la touche Shift enfoncée robot.keyPress(KeyEvent.VK_SHIFT); // On déplace le curseur pour sélectionner la zone for (int x=1; x<10; x++) { robot.keyPress(KeyEvent.VK_RIGHT); robot.keyRelease(KeyEvent.VK_RIGHT); } for (int y=1; y<5; y++) { robot.keyPress(KeyEvent.VK_DOWN); robot.keyRelease(KeyEvent.VK_DOWN); } // On relâche la touche Shift robot.keyRelease(KeyEvent.VK_SHIFT); // Copier robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_C); robot.keyRelease(KeyEvent.VK_C); robot.keyRelease(KeyEvent.VK_CONTROL); // Coller String str = clipboard.getContents(null).getTransferData(DataFlavor.stringFlavor) .toString(); System.out.println(str); } }
Si vous des idées pour régler ce problème (ou le contourner) je prends, sachant que bien sûr on ne peut pas tout faire sur ce genre de console.
Merci d'avance.
A voir également:
- Autoriser la sélection et la copie
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Site inaccessible n'autorise pas la connexion - Guide
1 réponse
Apparemment, ça ne peux fonctionner que si le verrouillage numérique est éteint, il suffirait donc de rajouter cette instruction au démarrage pour avoir la sélection :
Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);Par contre, je me rends compte que ma copie avec Ctrl+C ne fonctionne pas aussi bien que ce que je croyais... il va falloir que je la débogue aussi.
KX
Messages postés
19031
Statut
Modérateur
3 020
En fait le Ctrl+C fonctionne bien mais il faut attendre un petit peu avant de le déclencher parce que la sélection ne se fait pas immédiatement après avoir relâché la touche Shift.
KX
Messages postés
19031
Statut
Modérateur
3 020
Note importante : l'objet Clipboard change à chaque fois, il ne faut donc pas le déclarer une seule fois comme je l'ai fais avec Clipboard clipboard = toolkit.getSystemClipboard(); mais faire l'appel complet à chaque fois qu'on a fait une nouvelle copie.