2013-04-30 9 views
6

titolo è confusa, ma non so come spiegarlo in poche parole:ascoltare per "aprire il file con la mia applicazione java" eventi in Windows

Ho un'applicazione Java che legge i file * .Esempio. Ho anche aggiunto un'associazione di file grazie a install4j quindi la mia applicazione viene avviata quando l'utente fa doppio clic su qualsiasi file con estensione * .example

Sembra che install4j invii il percorso del file nel args[] quindi dovrebbe essere facile da aprire quel file e mostralo nella mia app. MA cosa succede se l'app è già in esecuzione? Posso solo consentire un'istanza dell'applicazione, quindi come posso sapere che l'utente sta aprendo un file?

ho trovato questo: http://resources.ej-technologies.com/install4j/help/api/com/install4j/api/launcher/StartupNotification.html

Ma io ancora non capisco come dovrei usarlo e cosa dovrei aggiungere nella mia app per ascoltare per questo evento. Dove posso trovare un esempio?

+0

Se non è possibile trovare una soluzione tramite Install4J, è sempre presente [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info). La [demo dei servizi file.] (Http://pscode.org/jws/api.html#fs) mostra come utilizzarla per l'avvio iniziale, nonché quando viene aperto un nuovo file. –

risposta

4

Sulla base della documentazione si è collegato al, sembra che si può fare questo:

StartupNotification.registerStartupListener(new StartupNotification.Listener() { 
    public void startupPerformed(String parameters) { 
     System.out.println("Startup performed with parameters " + parameters); 
    } 
}); 

Dal startupPerformed sarà chiamato da diversi thread, si avrà bisogno di assicurarsi che il codice che gestisce queste notifiche è thread-safe.

La documentazione dice anche:

Per più file, i file sono circondati da virgolette e separati da spazi.

Quindi sarà necessario analizzare anche la stringa dei parametri.

+0

suona bene, cercherò di accettare domani. Grazie @andrewdotn !! – TheBronx

+1

funziona =) Ho aggiunto 'i4jruntime.jar' come libreria per il mio progetto e ho usato il tuo codice di esempio all'interno di' main() '. L'evento viene attivato quando l'app è in esecuzione e si apre un file e la variabile 'parameters' contiene il percorso assoluto del file. – TheBronx

Problemi correlati