Con EXEC non so, uso sempre SHELL. Si fa così:
DIM sErroriConsole AS String
SHELL "ls " & User.home &/ "*.couscous " & " 2>&1" TO sErroriConsole
PRINT sErroriConsole
Spiegazione dell'esempio:
eseguo il comando ls per cercare i file con estensione "couscous" nella home dell'utente. ls non li trova e dà un errore sullo standard error.
Dobbiamo redirigere lo standard error sullo standard output e lo facciamo con "2>&1"
Altro modo è redirigere gli errori su un file temporaneo:
DIM sErroriConsole AS String
sErroriConsole = Temp$
SHELL "ls " & User.home &/ "*.couscous " & "2> " & sErroriConsole WAIT
PRINT File.Load(sErroriConsole)
dipende dalle tue esigenze.
Ciao.
Sicuramente non ho capito. Faccio un ultimo tentativo.
PUBLIC SUB Form_Open()
DIM sErroriConsole AS String
SHELL "ls " & User.home &/ "*.couscous " & " 2>&1" TO sErroriConsole
IF Process.LastValue = 2 THEN
Message.Error(sErroriConsole, "Chiudi")
ME.Close
ENDIF
END
Eseguo ls. ls esce con un errore. "Process.last = 2" verifica che ls sia
uscito con un errore. A quel punto il messaggio d'errore viene visualizzato in un message box. Se non ho capito, deve intervenire qualcun altro. Ciao.
Sicuramente non ho capito. Faccio un ultimo tentativo.
Per l'intercettazione della console in quanto tale, si può aggiungere anche la gestione con Process:
Private hp As Process
Public Sub Form_Open()
hp = Shell "ls " & User.home &/ "*.couscous" For Input As "alibaba"
End
Public Sub alibaba_Read()
Dim s As String
Line Input #hp, s
Message.Error(s, "Chiudi")
hp.Close
Me.Close
End
Per l'argomento più in generale vedere nella WIKI, come per esempio anche qua:
http://www.gambas-it.org/wiki/index.php?title=Intercettare_dati_inviati_al_programma_dal_sistema_o_da_altri_programmi_utilizzati