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

    Inviare una hotkey in una finestra cmd aperta...

    Salve raga

    ho bisogno di gestire, tramite bottoni di un JFrame, un player che funziona tramite una semplice finestra terminal...
    Esempio: il tasto P avvia il player, il tasto Q lo spegne, il tasto S lo ferma etc... Devo reindirizzare queste funzioni ai tasti della finestra che ho creato...
    Questo è il codice per avviare la finestra

    codice:
    try{
    
            String command ="file.exe";
    
            Runtime rt =Runtime.getRuntime();
            pr = rt.exec(command);
    
            input =newBufferedReader(newInputStreamReader(pr.getInputStream()));
            output =newBufferedWriter(
                newOutputStreamWriter(pr.getOutputStream()));
    
            String line=null;
    
            while((line=input.readLine())!=null){
                System.out.println(line);
            }
    
            int exitVal = pr.waitFor();
            System.out.println("Exited with error code "+exitVal);
    
        }catch(IOException|InterruptedException e){
            System.out.println(e.toString());
            e.printStackTrace(System.out);
        }   
    


    A questo punto invio i comandi su
    pr.getOutputStream() oppure (BufferedWriter)output ma non ottengo il risultato sperato...

    Cosa non va?

    Thanks


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    ho bisogno di gestire, tramite bottoni di un JFrame, un player che funziona tramite una semplice finestra terminal...
    Esempio: il tasto P avvia il player, il tasto Q lo spegne, il tasto S lo ferma etc... Devo reindirizzare queste funzioni ai tasti della finestra che ho creato...

    Cosa non va?
    Allora, prima questione importante: quella applicazione "console" richiede input sullo standard-input .... o tramite input diretto a "basso" livello (tramite API specifiche, es. quelle Win32 o le funzioni es. getch() del C)?
    Sono due cose ben diverse. Nel primo caso puoi operare da Java, potendo appunto "scrivere" sullo standard-input del processo lanciato. Nel secondo caso NON puoi fare nulla.

    Seconda questione: tutto quel codice che hai postato, nel contesto di quale thread lo stai eseguendo?

    Terzo aspetto: ammesso che quella applicazione usi gli stream standard, fa dell'output su standard-output? Se sì appunto dovresti leggerlo (come fai con quel while). Immagino che quella applicazione termini solo dopo che hai dato un comando specifico. Quindi che faccia output o no, comunque la applicazione resta in vita per un bel po' di tempo e quindi rimani comunque dentro quel while fino a che termina.
    Questo vuol dire che quel tuo codice è "bloccante", tiene impegnato il thread corrente (ti ho chiesto prima del thread, non deve essere il Event Dispatch Thread).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Sorry, mi rendo conto che la richiesta presenta qualche buco...

    Allora, l'applicazione da gestire è questa...
    http://www.screamer-radio.com
    E sinceramente non riesco a rispondere alla domanda...

    Per quanto riguarda il punto 2, ho creato una classe Runnable che nel metodo run ha solo quella porzione di codice, la classe principale esegue il JFrame che dovrebbe interfacciarsi...

    Punto 3, si ottengo l'output sulla console e resta in attesa di ricevere un "segnale"... Ma ho fatto prove anche omettendo il ciclo while...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    Allora, l'applicazione da gestire è questa...
    http://www.screamer-radio.com
    Se ti riferisci al sc.exe di Screamer Radio .... l'ho provato. Lo standard-output è redirezionabile, se lanci sc.exe url > unFile non vedi più nulla su console (l'output è nel file) ma i controlli sono ancora funzionanti.
    Se redirezioni l'input es. sc.exe url < unQualunqueFile i controlli sono comunque ancora funzionanti. E questo vuol dire che NON sta usando lo standard-input ma l'input "diretto" da console a più basso livello (con quale API non lo so).
    Pertanto da Java e di serie con il solo framework standard non puoi controllarlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    "Bene"....... Devo cercare quindi qualche alternativa a quel software...


    Grazie per il supporto e per il tempo che mi hai dedicato
    Ultima modifica di Fire Fox II; 22-04-2015 a 11:41

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Se l'applicazione grafica (non quella console) di Screamer Radio permettesse (e non ho verificato questo) di gestire delle "hotkey" globali, allora da Java potresti provare a iniettare le combinazioni di tasti nel sistema tramite la classe java.awt.Robot.

    Devono essere hotkey appunto globali, cioè gestite da Screamer Radio indipendentemente da quale è la finestra attiva nel sistema (e su Windows è possibile). Non sarebbe però una soluzione molto "pulita".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    No, non posso usare la versione grafica... Ho bisogno esclusivamente di una finestra java da cui posso gestire un flusso audio proveniente da un m3u... Per questo usavo la versione console...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    post duplicato, scusate.
    Ultima modifica di andbin; 22-04-2015 a 14:30
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    No, non posso usare la versione grafica...
    Ok, capito.

    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    gestire un flusso audio proveniente da un m3u...
    Hai verificato se la API JMF (Java Media Framework) è in grado di gestire quel tipo di flusso audio specifico?

    (http://en.wikipedia.org/wiki/Java_Media_Framework)

    O le alternative elencate sempre alla pagina indicata.
    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.