Lettura dati da un Processo e scrittura dati in un Processo

Da Gambas-it.org - Wikipedia.

Aperto un programma come Processo, è possibile leggervi e scrivervi dati con modalità analoghe a quelle per leggere e scrivere in un File.

variabile_Processo = Shell "nome_programma" For [Read] [Input] Write]

oppure

variabile_Processo = Exec ["nome_programma"] For [Read] [Input] Write]

da sottolineare che, per scrivere in un processo, si deve aprire quest'ultimo soltanto con le parole: For Write. Si potranno usare, come funzioni per scrivere nel processo: Write o Print.


Scrittura di dati in un processo

Di seguito un breve codice esemplificativo, con il quale lanciamo un programma e lo gestiamo con Process:

Private vPr As Process


Public Sub Button1_Click()

   vPr = Shell "nome_del_programma" For Write As "processo"
' oppure:
   vPr = Exec ["nome_del_programma"] For Write As "processo"

End


Public Sub Button2_Click()

' Scriviamo nel processo ad esempio una stringa di testo:
   Write #vPr, "testo_qualsiasi"

End


Public Sub processo_Kill()   ' Quando viene chiuso il programma lanciato...

  Quit   ' ...allora viene chiuso anche l'applicativo Gambas

End


Lettura dati da un processo

Analogamente si procederà quando si devono leggere dati dal flusso di un processo. Si potrà gestire il processo in lettura sia dichiarandolo con le For Read che con For Input; ed utilizzare, per la effettiva lettura, i seguenti comandi:

  • Read;
  • Input;
  • Line Input;
  • variabile_processo.ReadLine(); per leggere una stringa.

Nel caso che segue, si porrà in osservazione il flusso del processo: non appena ci sarà qualche dato disponibile da leggere nel processo, verrà sollevato l'apposito evento processo_Read():

Private vPr As Process


Public Sub Button1_Click()

   vPr = Shell "nome_del_programma" For Read As "processo"  ' oppure: For Input
' Si potrà scrivere anche così:
   vPr = Exec ["nome_del_programma"] For Read As "processo"  ' oppure: For Input

End


 Public Sub processo_Read()

 Dim s As String

' Leggiamo dal processo ad esempio una stringa di testo:
   Line Input #vPr, s

   Print s

End


Public Sub processo_Kill()   ' Quando viene chiuso il programma lanciato...

  Quit   ' ...allora viene chiuso anche l'applicativo Gambas

End