eh.... la questione che hai posto è molto complessa.
La sua parte semplice è se tu vuoi leggere il risultato
unico di un comando. Risultato
unico nel senso che l'azione, la funzione del comando si esplica e termina in una sola volta con un solo immediato risultato.
Per esempio, volendo leggere un file di testo con il comando bash
cat, questo ci restituirà in console (o in terminale) in un colpo solo, in una sola volta l'intero testo del file: la sua funzione si estinguerà non appena ci avrà restituito i dati contenuti dal file. In tal caso si potrà trasferire con la parola
To il risultato in una variabile di tipo stringa:
Public Sub Form_Open()
Dim s As String
Shell "cat /percorso/del/file/da/leggere" To s
TextArea1.Text = s
End
Il discorso si complica se il comando, o comunque l'istruzione che determina la scrittura di dati in console, restituisce più dati nel tempo.
In questo caso tu non sai con precisione l'attimo in cui l'istruzione ti restituisce un dato, costringendoti quindi a
restare ad osservare l'evento. Si adotterà con la Classe
Process una risorsa analoga a quella prevista per la gestione dei file con
Open ..... For Read Watch: si sottopone l'istruzione in osservazione, quando sarà giunto da essa uno o più dati insieme, e dunque sarà possibile leggere quei dati, verrà sollevato un evento che ci consentirà di poter leggere quei dati.
Ti mostro un esempio
astratto di quanto detto:
Private pr as Process
Public Sub Form_Open()
' Sottopongo la mia istruzione (quella che è, insomma) in osservazione.
' Attribuisco la variabile di tipo "Process" ad un Gruppo (che chiamo ad esempio: "Osservatore"), affinché possa sollevare un evento:
pr = Shell "istruzione" For Read As "Osservatore"
End
Public Sub Osservatore_Read()
Dim s As String
Line Input #pr, s
TextArea.Text = s
End
Qualche esempio pratico lo puoi vedere in questa pagina della nostra WIKI:
https://www.gambas-it.org/wiki/index.php/Intercettare_i_dati_del_mouse_dai_file-device_mouse,_mice,_eventInvero, anche il primo caso, quello più semplice, puoi risolverlo con la modalità appena vista; e quindi così:
Private pr as Process
Public Sub Form_Open()
' Sottopongo la mia istruzione (quella che è, insomma) in osservazione.
' Attribuisco la variabile di tipo "Process" ad un Gruppo (che chiamo ad esempio: "Osservatore"), affinché possa sollevare un evento:
pr = Shell "cat /percorso/del/file/da/leggere" For Read As "Osservatore"
End
Public Sub Osservatore_Read()
Dim s As String
Read #pr, s, -256
TextArea1.Text &= s
End
La questione da te posta si complica ulteriormente, se si tratta di recuparare da console messaggi da te
non previsti (per esempio avvisi vari ed altro).
Altro puoi trovarlo facendo una ricerca sul forum immettendo la parola "console".
Intanto ti segnalo questo:
http://www.gambas-it.org/smf/index.php?topic=297.0