Newsgroup: it.comp.java
Titolo: Avviare programma predefinito per testi

Come faccio ad avviare da java l'editor testuale predefinito per i file rtf?

 writes:
t> Come faccio ad avviare da java l'editor testuale predefinito per i
t> file rtf?
Lo fa  "la shell grafica" del sistema.  Ogni sistema ha il  suo tool a
command line per farlo, quindi la cosa non e` portabile.
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software


Stavo vedendo proprio ora che java6 ha una classe Desktopche permette 
proprio questa operazione....stavo pensando, considerando che il programma 
che sto svilupando puo' girare o su win (con java 1.5) , o su mac ma sempre 
con una copia di office presente,di usare Runtime.getRuntime().exec(), uno 
per ogni sistema (tipo con degli if....)
Il problema č che non so aprire word passandogli un file come parametro....
cioe, se faccio
Runtime.getRuntime().exec("notepad.exe c:\\testo.txt"); va tutto a 
meraviglia, ma non so come richiamare word (winword.exe non va...dice "error 
= 2") 

> 
t> Stavo vedendo proprio ora che java6 ha una classe Desktopche
t> permette proprio questa operazione....
Allegria... Scelta veramente balenga...
t> che il programma che sto svilupando puo' girare o su win (con java
t> 1.5) , o su mac ma sempre con una copia di office presente
Proprio un attimo di elasticità mentale ?
1) L'utente potrebbe usare un altro tool per editare gli RTF, visto che
ci sono, sono validi ed oltretutto non richedono una licenza di office.
2) L'utente potrebbe voler usare un terzo S.O. che non sia uno dei due
   che prevedi.
Quante if vuoi mettere nel programma ?
Metti in un file di properties una stringa del tipo
path/del/programma %f
e poi sostituisci a %f il nome del file...
Se uno usa word su Windows, scriverà nel file di properties
C:\he\cavolo\ne\so\dove\sta\sto\cesso\windowd.exe %f
se invece sempre sotto Windows usa OpenOffice, scriverà
C:\whatever\OpenOffice.org 2.0\program\swriter.exe %f
se usa Emacs sotto Linux 
/usr/local/share/emacs/bin/emacsclient %f
etcetera.
Puoi preparare  un dialog per gestire  il contenuto di  questo file di
properties,  preparando  magari,  per  cortesia,  alcune  impostazioni
"precotte" per  le situazioni più diffuse, ma  permettendo di inserire
una configurazione a manina.


 path/del/programma %f
E' proprio questa che non funziona....semplicemente non avvia il 
processo.... 

 = 2") 
Chiaro.
Intanto error = 2 equivale a file not found e la cosa ha perfettamente senso, perche' il notepad fa parte della roba "standard" che windows si tira dietro e dunque e' nel path, mentre per word e' esattamente il contrario. Del resto lo puoi facilmente verificare aprendo il prompt dei comandi e scrivendo winword (con tutta probabilita' ti vedrai rispondere: "winword" non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch).
Soluzione: mettici tutto il path (auguri a questo punto, io potrei installarmi word nei posti piu' disparati sul mio pc).
Per evitare poi di incappare in problemi con la exec() di runtime, ti indirizzo ad un'utile lettura:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
Saluti
CarMas

> 
t> Come sopra, nel mio caso no!
E se un giorno gli  fanno una offerta economicamente vantaggiosa ? Mai
dire mai...
t> E' proprio questa che non funziona....semplicemente non avvia il
t> processo....
*Ci  pensa un  attimo,  per un  attimo  ha il  dubbio  che non  esista
 exec("stringa di comando")*
 Controlla la documentazione, c'č... Legge la documentazione...
 Scoppia a ridere ghignando "avete voluto windows, pedalate!!!!" .
 Si ricompone*
Usa la versione di exec() che accetta un array, vuoi vedere che come per
magilla funziona ? Ah, full path deglie eseguibili, of course...
*continua a ridacchiare e firma*



A quanto pare di risposte ne hai avute... adesso pensa ad usare il buonsenso 
per la scelta migliore
;-)
se proprio vuoi dai anche un'occhiata alla libreria jdic.
merk
--------------------------------------------------------------------------------
La mia Cartella di Posta in Arrivo è protetta con SPAMfighter
4377 messaggi contenenti spam sono stati bloccati con successo.
Scarica gratuitamente SPAMfighter! 

Forse ti basta (per Windows)
 Runtime.getRuntime().exec("cmd /c "+nomeFile);