Je développe une application Java en utilisant Windows Desktop Search à partir de laquelle je peux récupérer des informations sur des fichiers sur mon ordinateur tels que les urls (System.ItemUrl). Un exemple d'une telle URL estOuvrir des mails dans outlook à partir de Java en utilisant le protocole "mapi: //"
file://c:/users/ausername/documents/aninterestingfile.txt
pour les fichiers "normaux". Ce champ donne aussi des urls d'articles de courrier indexés depuis Outlook ou Thunderbird. Les objets de Thunderbird (uniquement disponibles avec Vista et sept) sont également des fichiers (.wdseml). Mais les articles de perspectives de urls commencent par « mapi: // » comme:
mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/[email protected]($b423dcd5)/0/Inbox/가가가가곕갘객겒갨겑곓걌게겻겨곹곒갓곅갩갤가갠가
Le problème que j'ai ouvre l'élément réel de Java dans Outlook en utilisant cette URL. Si je le copie/colle dans la boîte de dialogue d'exécution de Windows, cela fonctionne; cela fonctionne aussi si j'utilise "start" suivi de l'URL copiée/collée dans la ligne de commande.
L'URL semble être codée en UTF-16. Je veux être en mesure d'écrire ce code:
String url = "mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/[email protected]($b423dcd5)/0/Inbox/가가가가곕갘객겒갨겑곓걌게겻겨곹곒갓곅갩갤가갠가";
Runtime.getRuntime().exec("cmd.exe /C start " + url);
Je ne travaille pas et je l'ai essayé d'autres solutions telles que:
String start = "start";
String url = "mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/[email protected]($b423dcd5)/0/Inbox/가가가가곕갘객겒갨겑곓걌게겻겨곹곒갓곅갩갤가갠가";
FileOutputStream fos = new FileOutputStream(new File("test.bat");
fos.write(start.getBytes("UTF16");
fos.write(url.getBytes("UTF16"));
fos.close();
Runtime.getRuntime().exec("cmd.exe /C test.bat");
sans succès. En utilisant la solution ci-dessus, le fichier « test.bat » contient l'URL correcte et la commande « start », mais le terme des résultats de « test.bat » dans le message d'erreur bien connu:
'■' is not recognized as an internal or external command, operable program or batch file.
Quelqu'un at-il une idée d'être en mesure d'ouvrir "mapi: //" éléments de Java?
Quel détour! Pourquoi l'exec (cmd)? Java a-t-il un moyen d'appeler des objets COM? Ensuite, vous devriez pouvoir importer la bibliothèque de types de 'WScript.Shell' (qui porte le nom complet' Windows Script Host Object Model') et appeler directement Run. –