Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java] "Apri con" mio programma scritto in java

    Ciao. Ho scritto un programma con cui sfoglio il contenuto degli archivi zip.
    Vorrei poter aprire questi archivi senza dover prima aprire il programma e caricarli da lì, in pratica vorrei poter tramite il menù proprietà dell'archivio andare su "Apri con" e selezionare il mio programma, in modo che successivamente mi basta fare doppio click sull'archivio.

    Immagino che per far ciò vada convertito il jar in exe potete confermare?
    Inoltre a livello di codice devo fare qualcosa?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    Ciao. Ho scritto un programma con cui sfoglio il contenuto degli archivi zip.
    Vorrei poter aprire questi archivi senza dover prima aprire il programma e caricarli da lì, in pratica vorrei poter tramite il menù proprietà dell'archivio andare su "Apri con" e selezionare il mio programma, in modo che successivamente mi basta fare doppio click sull'archivio.
    La associazione di estensioni di file con applicazioni è una cosa che è estremamente system-dependent e varia anche radicalmente da un S.O. all'altro. Java e il framework standard non hanno nulla per gestire le associazioni delle estensioni (né tools, né API apposite, perlomeno che io sappia).
    In Windows le associazioni sono memorizzate nel Registry, sotto HKEY_CLASSES_ROOT.

    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    Immagino che per far ciò vada convertito il jar in exe potete confermare?
    No, non è strettamente necessario. Nel senso che quello che si può avviare è comunque il launcher della JVM (java.exe o equivalente per altro S.O., o javaw.exe su Windows)

    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    Inoltre a livello di codice devo fare qualcosa?
    No, a parte ovviamente ricevere l'argomento, cioè il file su cui lavorare, tramite il solito String[] args del main.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    No, a parte ovviamente ricevere l'argomento, cioè il file su cui lavorare, tramite il solito String[] args del main.
    Io ho un JFileChooser dal quale scelgo un file e salvo il path in una stringa. Non uso args.
    Come dovrei interagire con args?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    Io ho un JFileChooser dal quale scelgo un file e salvo il path in una stringa. Non uso args.
    Come dovrei interagire con args?
    Se lanci una app Java con:

    (path\)java -jar (path\)tuaapp.jar (path\)nomefile.xyz

    (dove (path\) indica solo che ci può essere un path relativo/assoluto)

    allora il main riceve un String[] di lunghezza 1 con un elemento "(path\)nomefile.xyz"

    Se tu riesci a fare in modo che la associazione di una estensione faccia lanciare una cosa del genere, dove ovviamente il nome del file deve essere dinamico cioè passato dal sistema ... beh, funziona.

    Se non ti è chiaro come sono gestite le associazioni, perlomeno su Windows, vedi ad esempio questa discussione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ma ipotizzando che io riesca a effettuare l'associazione tra l'estensione e il mio jar è garantito un passaggio di tale file come argomento?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    è garantito un passaggio di tale file come argomento?
    Se su Windows usi "%1" come nell'esempio fornito nella discussione linkata, sì. Ti è chiaro, da quelle immagini, cosa succede per i file pdf a cui è associato di default Adobe Reader?

    C'è una associazione:
    .pdf --> AcroExch.Document

    (AcroExch.Document è solo un nome "logico") e poi:
    AcroExch.Document --> Open Command: "C:\...blabla...\AcroRd32.exe" "%1"

    Quindi quando si apre un file .pdf (es. doppio click o "Apri" da explorer), viene eseguito AcroRd32.exe e al posto di %1 il sistema sostituisce il nome del file che hai scelto, che diventa semplicemente il primo argomento passato alla applicazione.
    Se da Java gestisci gli argomenti allo stesso modo, ovviamente è fattibile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ho creato il registro nella chiave dell'estensione che mi interessa e poi o creato la chiave in HKEY_CLASSES_ROOT.
    In HKEY_CURRENT_USER\Software\Classes e HKEY_LOCAL_MACHINE\Software\Classes devo fare qualcosa?
    Ultima modifica di microprocessore; 25-10-2014 a 22:24

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.