Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    2

    Aprire programmi esterni

    Salve, vorrei aprire programmi esterni (non scritti in java) tramite codice java e sapere la grandezza delle finestre occupate da questi programmi. Inoltre mi servirebbe anche la possibilità di chiuderli a mio piacimento.
    Come posso fare?

    Per aprire un programma ho scoperto 2 metodi:
    1) Runtime.getRuntime().exec(comando)

    2)Desktop d=Desktop.getDesktop();
    d.open(file);

    funzionano entrambi, però non ho la possibilità di sapere la grandezza della finestra del programma aperto e inoltre non so come chiuderlo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Aprire programmi esterni

    Originariamente inviato da sh3va87
    però non ho la possibilità di sapere la grandezza della finestra del programma aperto
    In generale no, non lo puoi sapere. Una applicazione può fare quello che vuole in termini di finestre: quante aprirne, dove posizionarle, con quali dimensioni, ecc....

    E nel framework di Java non c'è una API apposita per avere informazioni sulle finestre di altre applicazioni esterne. L'unica sarebbe sfruttare le API "native" del S.O. per ottenere queste informazioni. Ma la cosa diventerebbe molto system-dependent e bisogna comunque "sapere" qualcosa a priori del processo lanciato.

    Originariamente inviato da sh3va87
    inoltre non so come chiuderlo.
    La exec() restituisce un Process, che ha un metodo destroy(). Ma nota che questo destroy causa una terminazione "brutale" quindi generalmente è da prendere/usare "con le pinze". Il processo, in base a cosa fa o ha fatto, potrebbe non completare/aggiornare/salvare correttamente certe cose se viene terminato in modo a lui imprevisto.

    Pertanto anche per la terminazione di un processo bisogna andare cauti. Se può andare bene destroy() o no dipende da cosa fa il processo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Aprire programmi esterni

    Originariamente inviato da sh3va87
    Salve, vorrei aprire programmi esterni (non scritti in java) tramite codice java e sapere la grandezza delle finestre occupate da questi programmi. Inoltre mi servirebbe anche la possibilità di chiuderli a mio piacimento.
    Come posso fare?

    Per aprire un programma ho scoperto 2 metodi:
    1) Runtime.getRuntime().exec(comando)

    2)Desktop d=Desktop.getDesktop();
    d.open(file);

    funzionano entrambi, però non ho la possibilità di sapere la grandezza della finestra del programma aperto e inoltre non so come chiuderlo.
    Non penso tu possa conoscere la dimensione della finestra del programma: è dipendente dal sistema operativo e, inoltre, potresti anche avviare un programma console che non ha alcuna finestra. Se il programma chiamante non ha alcun modo per comunicare questa informazione all'esterno, semplicemente, non otterrai in nessun modo questa informazione (a meno che tu non riesca a scrivere una routine in codice nativo, quindi system-dependent, e la usi tramite JNI).

    Per poter chiudere un programma aperto, invece, basta ricavarne il Process (e non buttarlo via, come fai tu nella prima istruzione) e quindi richiamarne il metodo destroy() (con tutte le cautele del caso, vedi documentazione). Qui un esempio:

    codice:
    try {
       Process p = Runtime.getRuntime().exec( ... );
       // Chiudo brutalmente l'applicazione appena avviata:
       p.destroy();
    } catch ( ... ) { ... }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    2
    Grazie mille per le risposte
    cercherò di inventarmi qualcosa.

    Esiste invece un metodo per aprire un programma esterno in un frame?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sh3va87
    Esiste invece un metodo per aprire un programma esterno in un frame?
    Questo non ha senso .... specialmente se per "frame" intendi un Frame/JFrame di Java. Una applicazione esterna non ha niente a che fare con la tua applicazione Java e come detto potrebbe fare quello che vuole per quanto riguarda le sue finestre.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.