Ich habe eine Java-Anwendung entwickelt, die die Windows-Desktop-Suche verwendet und mit der ich einige Informationen über Dateien auf meinem Computer abrufen kann, z. B. URLs ( System.ItemUrl ). Ein Beispiel für eine solche Url ist
file://c:/users/ausername/documents/aninterestingfile.txt
für "normale" Dateien. In diesem Feld werden auch die URLs der von Outlook oder Thunderbird indizierten E-Mail-Elemente angezeigt. Die Elemente von Thunderbird (nur unter Vista und Seven verfügbar) sind ebenfalls Dateien (.wdseml). Aber die URLs von Outlook-Elementen beginnen mit "mapi://" wie :
mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/toto@mycompany.com($b423dcd5)/0/Inbox/
Das Problem, das ich habe, ist das Öffnen des realen Elements aus Java in Outlook mit dieser URL. Wenn ich sie in den Ausführen-Dialog von Windows kopiere/einfüge, funktioniert es; es funktioniert auch, wenn ich "start" gefolgt von der kopierten/eingefügten URL in der Befehlszeile verwende.
Die Url scheint in UTF-16 kodiert zu sein. Ich möchte in der Lage sein, solchen Code zu schreiben:
String url = "mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/toto@mycompany.com($b423dcd5)/0/Inbox/";
Runtime.getRuntime().exec("cmd.exe /C start " + url);
Es funktioniert nicht, und ich habe andere Lösungen ausprobiert, z. B. :
String start = "start";
String url = "mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/toto@mycompany.com($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");
ohne jeden Erfolg. Mit der obigen Lösung enthält die Datei "test.bat" die korrekte URL und den Befehl "start", aber die Ausführung von "test.bat" führt zu der bekannten Fehlermeldung :
'' is not recognized as an internal or external command, operable program or batch file.
Hat jemand eine Idee, wie man "mapi://"-Elemente von Java aus öffnen kann?