Bonjour
Bon sans trop dire voici un code source qui illustre le problème:
Si vous executer ce code 2 fois successives, vous remarquerez que le String chaine qui a été exporté vers le SystemClipBoard, a été récupéré correctement dans chaine_execution_courante lors de la premiere execution, mais lorsqu'on est passé a la deuxieme exéccution et on a essayé de le récupéré dans chaine_execution_precedante on a pas obtenu le même resultat !
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
54
55 import java.awt.HeadlessException; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; public class ClipBoardTest { private static final String chaine="abc"+(char)0xFFFF+(char)0xFFEE+(char)0xFFFE; public static void main(String[] args) { try { //recuperation du contenu du Clipboard, qui provient de l'execution precedante String chaine_execution_precedente=null; if(Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.stringFlavor)) chaine_execution_precedente= (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); //****************************************************************************************** //chaine et chaine_execution_precedante sont ils egaux ? if(chaine_execution_precedente!=null) System.out.println(chaine.equals(chaine_execution_precedente)); //********************************************************* //exportation de la chaine StringSelection ss=new StringSelection(chaine); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, ss); //****************************************************** //importation de ce qu'on vient d'exporter String chaine_execution_courante=null; if(Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.stringFlavor)) chaine_execution_courante= (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); //chaine et chaine_execution_courante sont il egaux ? if(chaine_execution_courante!=null){ System.out.println(chaine.equals(chaine_execution_courante)); } //*********************************************************** } catch (HeadlessException e) { e.printStackTrace(); } catch (UnsupportedFlavorException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Quelqu'un connait-il la cause ?!
__________________________________________________________
Maintenant au cas où vous vous dites : mais pourquoi il teste un truc pareil ce c...
Et bah c'est que je souhaite faire communiquer des applications JAVA differentes sous forme de messages, que j'ai codé suivant un algorithme un peu particulier, et qui seront decodés a la reception. Ces messages sont de type String, et il faut que je les communique a traver le SystemClipBoard.
Voilà le probleme c'est que le message codé change lorsqu'il provient d'une autre application.
________________________________________________________________
Y a-t-il un moyen de recuperer le version originale du message, a partir d'une application n'etant pas le ClipBoardOwner et sans qu'il soit modfié?
Merci d'avance!
Partager