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

Da Gambas-it.org - Wikipedia.
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>
+
  <FONT color=gray>' ''Trova l'identificativo della finestra del Terminale aperta prima:''</font>
 
   c = Desktop.FindWindow("Terminal")     
 
   c = Desktop.FindWindow("Terminal")     
 
    
 
    
<FONT color=gray>' ''...e procede al suo inglobamento come stratagemma,'' 
+
    
' ''affinché possa successivamente attribuirle il "Focus":''</font>
+
  <FONT color=gray>' ''Attribuisce il "Focus" alla finestra del Terminale:''</font>
   Embedder1.Embed(c[0]) 
+
   Desktop.ActiveWindow = c[c.Max]
 
 
  Wait 0.5 
 
 
 
  <FONT color=gray>' ''Attribuisce il "Focus" alla finestra del Terminale ora inglobato:''</font>
 
   Embedder1.SetFocus 
 
 
    
 
    
 
   With Desktop
 
   With Desktop

Versione delle 08:08, 22 dic 2013

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 ed 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()  
     
' Apro la finestra di un Terminale:
   Desktop.OpenTerminal
      
End
 
 
Public Sub Button2_Click()    
      
 Dim c As Integer[]  
 
' Trova l'identificativo della finestra del Terminale aperta prima:
  c = Desktop.FindWindow("Terminal")    
 
  
' 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}")
 
End