Differenze tra le versioni di "Lanciare un programma senza Shell, ma da una finestra di un Terminale"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
Per poter lanciare un programma senza usare l'istruzione ''Shell'' o ''Exec'', bensì da un ''Terminale'', si potrà adottare un codice come quello che segue, attivando innanzitutto i componenti ''gb.desktop'' e ''gb.desktop.x11'' ed usando, così, il metodo ''.SendKeys'' della Classe ''Desktop''.
+
Per poter lanciare un programma <SPAN Style="text-decoration:underline">senza</span> usare l'istruzione ''Shell'' o ''Exec'', bensì da un ''Terminale'', si potrà adottare un codice come quello che segue, attivando innanzitutto il componente ''gb.desktop'' e usando, così, il metodo ".SendKeys()" della Classe ''Desktop''.
 
<BR>Il metodo ''Desktop.SendKeys()'' simula da codice effettivamente l'invio di caratteri attraverso la tastiera (come se si fosse fatta pressione sui tasti alfanumerici della tastiera in propria dotazione).
 
<BR>Il metodo ''Desktop.SendKeys()'' simula da codice effettivamente l'invio di caratteri attraverso la tastiera (come se si fosse fatta pressione sui tasti alfanumerici della tastiera in propria dotazione).
  
Riga 5: Riga 5:
 
  '''Public''' Sub Button1_Click()   
 
  '''Public''' Sub Button1_Click()   
 
        
 
        
  <FONT color=gray>' ''Apro la finestra di un Terminale:''</font>
+
  <FONT color=gray>' ''Apre la finestra del Terminale:''</font>
 
     Desktop.OpenTerminal
 
     Desktop.OpenTerminal
 
        
 
        
Riga 15: Riga 15:
 
   Dim c As Integer[]   
 
   Dim c As Integer[]   
 
    
 
    
  <FONT color=gray>' ''Trova l'identificativo della finestra del Terminale aperta prima.''
+
  <FONT color=gray>' ''Trova il numero identificativo della finestra del Terminale, prima aperta, inserendo nel metodo "FindWindow()" il "nome della finestra" del Terminale oppure il nome del programma Terminale.''</font>
' ''Nel metodo "FindWindow()" inseriamo il nome della finestra del Terminale, che''
+
   c = Desktop.FindWindow("<FONT color=gray>[''nome_della_finestra_del_terminale'']</font>", "<FONT color=gray>[''nome_del_terminale'']</font>", Null)
' ''potrà essere - a seconda dei casi - "Terminal" oppure in italiano "Terminale".''</font>
 
   c = Desktop.FindWindow("*erminal")
 
 
    
 
    
 
   If c.Count > 0 Then
 
   If c.Count > 0 Then

Versione delle 18:15, 5 nov 2021

Per poter lanciare un programma senza usare l'istruzione Shell o Exec, bensì da un Terminale, si potrà adottare un codice come quello che segue, attivando innanzitutto il componente gb.desktop e usando, così, il metodo ".SendKeys()" della Classe Desktop.
Il metodo Desktop.SendKeys() simula da codice effettivamente l'invio di caratteri attraverso la tastiera (come se si fosse fatta pressione sui tasti alfanumerici della tastiera in propria dotazione).

Nell'esempio che segue si lancerà da Terminale - senza Shell - il programma di scrittura "Gedit":

Public Sub Button1_Click()  
     
' Apre la finestra del Terminale:
   Desktop.OpenTerminal
      
End
 
 
Public Sub Button2_Click()    
      
 Dim c As Integer[]  
 
' Trova il numero identificativo della finestra del Terminale, prima aperta, inserendo nel metodo "FindWindow()" il "nome della finestra" del Terminale oppure il nome del programma Terminale.
  c = Desktop.FindWindow("[nome_della_finestra_del_terminale]", "[nome_del_terminale]", Null)
 
  If c.Count > 0 Then
' Attribuisce il "Focus" alla finestra del Terminale:
    Desktop.ActiveWindow = c[c.Max]
 
    With Desktop
' Scrive nel Terminale la parola "gedit":
      .SendKeys("gedit")
' Simula l'emissione del comando di "Invio":
      .SendKeys("[Return]")
    End With

' Ma più brevemente le due precedenti righe potranno essere sostituite dalla seguente,
' che prevede alla fine il carattere di "nuova linea a capo":
'    Desktop.SendKeys("gedit\n")
  Endif
 
End