Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 25 Luglio 2016, 17:47:13

Titolo: [RISOLTO] intercettare il risultato di un comando SHELL
Inserito da: allegfede - 25 Luglio 2016, 17:47:13
sto giocherellando con cdparanoia (http://www.cyberciti.biz/faq/linux-ripping-and-encoding-audio-files/) ma il normale EXEC o shell non mi ritorna nulla.

da shell (terminale) il comando vuoto "cdparanoia" ritorna l'help del comando:
Codice: [Seleziona]
cdparanoia III release 10.2 (September 11, 2008)

(C) 2008 Monty <monty@xiph.org> and Xiph.Org

Report bugs to paranoia@xiph.org
http://www.xiph.org/paranoia/
USAGE:
  cdparanoia [options] <span> [outfile]

OPTIONS:
  -A --analyze-drive ....

ma dal solito esempio di gambas:
Dim s As String
   
    Shell "cdparanoia" To s
     
    Print s

Titolo: Re:intercettare il risultato di un comando SHELL
Inserito da: vuott - 25 Luglio 2016, 23:36:45
...in tali casi molte volte รจ possibile ottenere il risultato di un comando Shell ponendo in osservazione il processo del programma esterno lanciato.

Insomma ad esempio:

Codice: [Seleziona]
Private pr As Process


Public Sub Main()

' Lanciamo con Shell il programma esterno e ne poniamo in osservazione in lettura il processo:
  pr = Shell "nome_programma" For Input As "Osserva"

End


Public Sub Osserva_Read()
 
  Print pr.ReadLine()
 
End
Titolo: Re:intercettare il risultato di un comando SHELL
Inserito da: allegfede - 26 Luglio 2016, 12:27:46
PERFETTO

funziona perfettamente .....

se puo' essere d'aiuto ho modificato il codice di VUOTT in modo da recepire l'output dei vari comandi e farne il parsing per estrarne il contenuto desiderato (ancora non l'ho fatto il parsing per il check del cd ma e' chiara l'idea):

Codice: [Seleziona]
Private pr As Process

Public ParanoiaReturns As New String[]

Public Sub Form_Open()

  Button_ReadCD.Enabled = VerifyAUdioCD()

End

Public Sub output_Read()
 
  ParanoiaReturns.Add(pr.ReadLine())
 
End

Function VerifyAUdioCD() As Boolean
 
  ParanoiaReturns.Clear
  pr = Shell "cdparanoia" For Input As "output"
  While ParanoiaReturns.Count = 0
    Wait
  Wend
 
End