Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244

    catturare l'ouptu di una finestra al di fuori di un programma java

    è possibile catturare con un programma java l'output di una finestra esterna al programma java stesso?
    per esempio.. eseguo un determinato programma esterno tramite java (con ProcessBuilder) e questo programma apre una finestra con un messaggio di errore... è possibile catturare la stringa contenuta nel messaggio di errore della finestra aperta??
    e se si... come si fa??

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Dopo che hai ottenuto un oggetto Process che rappresenta il processo che hai mandato in esecuzione puoi ricavarne gli stream di I/O con i metodi getErrorStream(), getInputStream() e getOutputStream().
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244
    questo lo sapevo... però ottengo cose del tipo "java.io.BufferedOutputStream@992bae" che ogni volta cambiano... è possibile trasformarli in String?
    in pratica io ho la necessità di confrontare due stream di output, però pur ottenendo lo stesso messaggio di output nella finestra del programma lanciato (con il process builder), ottengo due stream di output diversi...

  4. #4
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244
    x i moderatori:
    potete modificare il titolo della discussione mettendo "output" al posto di "ouptu" ?
    grazie

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da pcg4m3s
    questo lo sapevo... però ottengo cose del tipo "java.io.BufferedOutputStream@992bae" che ogni volta cambiano... è possibile trasformarli in String?
    Mi sembra strano... Posta il codice che usi per leggere l'output del processo :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244
    Originariamente inviato da pcg4m3s
    x i moderatori:
    potete modificare il titolo della discussione mettendo "output" al posto di "ouptu" ?
    grazie
    codice:
    Runtime rt;
    rt = Runtime.getRuntime();
    Process proc = rt.exec("C:\\Programmi\\MioProg\\mioprog.exe");
    System.out.println(proc.getOutputStream());
    proc.destroy();
    e ad ogni esecuzione mi da sempre output diversi...

  7. #7
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244
    Giusto per darti un'idea ti posto tre output diversi ottenuti eseguendo tre volte il programma:

    1) java.io.BufferedOutputStream@1e4853f

    2) java.io.BufferedOutputStream@1033a6f

    3) java.io.BufferedOutputStream@1cd66ea

    in realtà a me questi output mi sembrano dei riferimenti alla memoria (ma nn ne sono sicuro)... se così fosse, come si fa a risalire alla stringa che rappresentano?

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da pcg4m3s
    codice:
    Process proc = rt.exec("C:\\Programmi\\MioProg\\mioprog.exe");
    System.out.println(proc.getOutputStream());
    proc.destroy();
    No! Guarda questo esempio:

    codice:
            Runtime r = Runtime.getRuntime();
            Process p = r.exec("/usr/bin/hamachi start");
    
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
    
            String s = bufferedReader.readLine();
    
            System.out.println("Output del processo: " + s);
    Originariamente inviato da pcg4m3s
    Giusto per darti un'idea ti posto tre output diversi ottenuti eseguendo tre volte il programma:

    1) java.io.BufferedOutputStream@1e4853f

    2) java.io.BufferedOutputStream@1033a6f

    3) java.io.BufferedOutputStream@1cd66ea

    in realtà a me questi output mi sembrano dei riferimenti alla memoria (ma nn ne sono sicuro).
    No, è ciò che restituisce il metodo toString() dell'oggetto OutputStream che hai ottenuto, tutto qui.
    Fare System.out.println(proc.getOutputStream()) è come fare System.out.println(proc.getOutputStream().toString());
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Utente di HTML.it L'avatar di pcg4m3s
    Registrato dal
    Aug 2007
    Messaggi
    244
    Originariamente inviato da Alex'87
    No! Guarda questo esempio:

    codice:
            Runtime r = Runtime.getRuntime();
            Process p = r.exec("/usr/bin/hamachi start");
    
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
    
            String s = bufferedReader.readLine();
    
            System.out.println("Output del processo: " + s);


    No, è ciò che restituisce il metodo toString() dell'oggetto OutputStream che hai ottenuto, tutto qui.
    Fare System.out.println(proc.getOutputStream()) è come fare System.out.println(proc.getOutputStream().toString());
    ho fatto come dici tu. il problema è che ho un output sempre null.
    siccome viene lanciato un programma che appena si apre mostra una finestra con delle scritte e un tasto "OK", io vorrei solo catturare le scritte. tutto qui.

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da pcg4m3s
    siccome viene lanciato un programma che appena si apre mostra una finestra con delle scritte e un tasto "OK", io vorrei solo catturare le scritte. tutto qui.
    Aspetta, non puoi leggere il contenuto di un'interfaccia grafica! Se il programma scrive qualcosa sul terminale (o chiede un input sempre via terminale) puoi interagirci usando gli stream di I/O, altrimenti no! Fai scrivere il messaggio di errore anche sul terminale (usando System.out.println()), così da poterlo leggere.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.