Bonjour à tous

Voilà, je développe une sorte de macro permettant de remplir automatiquement un formulaire HTML ouvert avec un navigateur WEB.

Le principe est simple :

Depuis le programme, on passe 3 paramètres à la fonction qui va effectuer le copier/coller. L'utilisateur doit cliquer dans le premier champ à remplir, le programme se chargeant ensuite d'effectuer le reste.

J'ai deux problèmes :

1 - je souhaiterai ne pas avoir à cliquer moi même dans le champ mais que le programme trouve tout seul la fenêtre de Firefox. Evidemment, ce serait faisable en utilisant les API de user32.dll si seulement mon programme n'était pas multiplateforme ... Bref, des amis programmeurs Java m'ont dit que c'était impossible mais on ne sait jamais ...

2 - le premier problème n'est pas aussi grave que le second, pour lequel je vais vous montrer mon code :

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
public static void CopierColler(String deux, String trois, String quatre) throws AWTException
  {
    Clipboard cp = Toolkit.getDefaultToolkit().getSystemClipboard();
 
    Robot robot = new Robot();
    robot.setAutoDelay(30);
    StringSelection stdeux = new StringSelection(deux);
    StringSelection sttrois = new StringSelection(trois);
    StringSelection stquatre = new StringSelection(quatre);
 
   	cp.setContents(stdeux, null);
    	robot.keyPress(KeyEvent.VK_CONTROL);
    	robot.keyPress(KeyEvent.VK_V);
    	robot.keyRelease(KeyEvent.VK_CONTROL);
    	robot.keyRelease(KeyEvent.VK_V);
    	robot.keyPress(KeyEvent.VK_TAB);
    	robot.keyRelease(KeyEvent.VK_TAB);
    	robot.keyPress(KeyEvent.VK_TAB);
    	robot.keyRelease(KeyEvent.VK_TAB);
    	robot.keyPress(KeyEvent.VK_TAB);
    	robot.keyRelease(KeyEvent.VK_TAB);
    	robot.keyPress(KeyEvent.VK_TAB);
    	robot.keyRelease(KeyEvent.VK_TAB);
    	cp.setContents(sttrois, null);
    	robot.keyPress(KeyEvent.VK_CONTROL);
    	robot.keyPress(KeyEvent.VK_V);
    	robot.keyRelease(KeyEvent.VK_CONTROL);
    	robot.keyRelease(KeyEvent.VK_V);
    	robot.keyPress(KeyEvent.VK_TAB);
    	robot.keyRelease(KeyEvent.VK_TAB);
    	cp.setContents(stquatre, null);
    	robot.keyPress(KeyEvent.VK_CONTROL);
    	robot.keyPress(KeyEvent.VK_V);
    	robot.keyRelease(KeyEvent.VK_V);
    	robot.keyRelease(KeyEvent.VK_CONTROL);
  }
Comme vous le voyez, la macro copie la string deux dans le presse-papier système, la colle, passe au champ suivant, fait de même avec la string trois, passe au champ suivant puis fais de même avec la string quatre.

Mon problème est le suivant : les string deux et quatre sont bien collées mais la string trois ne l'est pas. J'ai vérifié le contenu des variables, j'ai également vérifié que l'opération se faisait bien sur le bon champ mais c'est comme si le control+v était purement et simplement ignoré.

Une idée ?