Quando tu scrivi sul pst/1, non credo tu vada a scrivere sul tuo terminale, ma da un'altra parte.
Mi sono espresso male: quando ho affermato precedentemente che "
nel terminale compare una nuova linea vuota per l'inserimento dei comandi", ho sottinteso che la parola "gedit" nel terminale medesimo era stata scritta, poi con l'esecuzione dello
pseudo tasto "Invio" c'era stato un
ritorno a capo.
Le righe:
fl = Open "/dev/pts/1" For Write
Wait 0.3
Write #fl, "gedit"
scrivono regolarmente la parola "gedit" nella finestra del terminale.
Insomma alla fine del processo dell'intero codice ottengo una cosa del genere all'interno della finestra del Terminale:
vuott@vuott-desktop ~/Scrivania $ gedit
vuott@vuott-desktop ~/Scrivania $
Hai provato ad inviare il comando "gedit" tramite SendKeys?
L'ho provato adesso. Questo sarebbe il codice:
Public Sub Form_Open()
Desktop.OpenTerminal
End
Public Sub Button1_Click()
Dim c As Integer[]
c = Desktop.FindWindow("Terminale")
Embedder1.Embed(c[0])
Wait 0.1
Embedder1.SetFocus
Desktop.SendKeys("{gedit}")
Wait 0.3
Desktop.SendKeys(Chr(10))
End
...così invece
funziona.
O anche più semplicemente così:
Public Sub Button1_Click()
' Apro la finestra di un Terminale:
Desktop.OpenTerminal
End
Public Sub Button2_Click()
Dim c As Integer[]
c = Desktop.FindWindow("Terminale")
Embedder1.Embed(c[0])
Wait 0.5
Embedder1.SetFocus
Desktop.SendKeys("{gedit\n}")
End
Da ciò si evince che il dubbio sugli "
eventi fasulli", da me sollevato nel mio primo intervento, non c'entra: il metodo
.SendKeys è dunque perfettamente in grado di simulare in tutto e per tutto la pressione del tasto "
Invio" della tastiera !
Scusa,
md9327, cosa intendi dire con "
In effetti sembra abbia preso solo l'ultimo SendKeys("\n") (alias Chr(10))." ? Sembrerebbe dunque questa circostanza il problema del primo codice. Infatti, forse ho compreso quello che intendi dire con "
non credo tu vada a scrivere sul tuo terminale": nella finestra del terminale sembra che venga semplicemente
mostrata quella parola, ma è come se sostanzialmente ai fini esecutivi non sia scritta ! A riprova di ciò ho notato che se faccio semplicemente scrivere, eliminando il comando .
SendKeys, la parola "gedit", e poi attaccato a questa vi scrivo io con la tastiera
manualmente un qualsiasi comando (ad esempio
ls, in modo tale che vedremo questa stringa
geditls), quest'ultimo comando viene riconosciuto ed eseguito senza problemi... proprio come se la prima parte (
gedit) dell'intera stringa
visibile (
geditls) non esistesse ! ...insomma la parola
gedit scritta con il primo codice in questa discussione si vede, ma... non si tocca !
In altre parole ciò che si legge nella finestra del Terminale è "
visibile", appunto, ma
non è utilizzabile !
Devo aggiungere che, sempre eliminando il comando .
SendKeys nel primo codice, quando appare nella finestra del terminale la parola "
gedit", se provo a tornare dietro con il cursore lampeggiante premendo il tasto con la freccia a sinistra, ciò è impedito... sembra quasi che la scritta "
gedit" non sia altro che una mera
estensione della linea:
vuott@vuott-desktop ~/Scrivania $
Al contrario, se si scrive un comando a mano con la tastiera, si potrà notare che è possibile tornare dietro con il cursore premendo il tasto con la freccia a sinistra.
Inoltre, se invece che della parola "
gedit", scrivo un testo più lungo, ad esempio "
alibaba ed i 40 ladroni", ed impongo questa istruzione:
Write #fl, Chr(13) & "alibaba ed i 40 ladroni"
la prima riga del mio Terminale:
vuott@vuott-desktop ~/Scrivania $
viene quasi completamente sovrascritta; ed avrò questo risultato:
alibaba ed i 40 ladroni/Scrivania $Insomma, dall'esperienza effettuata, sembra che con il metodo descritto nel mio primo messaggio il Terminale si comporti come la Console dell'IDE di Gambas:
può mostrare il testo, ma
non può utilizzare quel testo medesimo.