probleme recuperation SystemClipboard
Bonjour
Bon sans trop dire voici un code source qui illustre le problème:
Code:
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();
}
}
} |
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 !
Quelqu'un connait-il la cause ?!
__________________________________________________________
Maintenant au cas où vous vous dites : mais pourquoi il teste un truc pareil ce c... :mrgreen:
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!