Chiudere programmi esterni

Da Gambas-it.org - Wikipedia.

Per terminare un programma esterno aperto è possibile usare Kill o Killall (a seconda delle situazioni).

Va distinto però il Kill, quale metodo di Process, dal Kill, quale comando da utilizzare con Shell (o Exec).


Caso in cui un programma esterno sia stato aperto da un programma .gambas mediante "process":{1}

Private hp As Process


Public Sub Form_Open()

' Avviamo un programma esterno e lo gestiamo come processo:
   hp = Exec["nome_programma_esterno]

End


Public Sub Button1_Click()

' Chiudiamo il programma esterno mediante il metodo di Process: Kill:
   hp.Kill

End


Caso in cui un programma esterno non sia stato aperto mediante "process"

In questo caso potremo utilizzare due soluzioni.

1) Possiamo chiudere il programma esterno con il comando Killall, lanciato con Shell (o Exec), al quale passiamo il nome del programma:

Public Sub Button1_Click()

   Shell "Killall nome_programma"

End


2) Possiamo chiudere il programma esterno con il comando Kill, lanciato con Shell (o Exec), al quale passiamo il numero del PID del programma {2}.

Public Sub Button1_Click()

   Shell "Kill numero_PID_del_programma"

End


Note

[1] Vedere al riguardo anche questa pagina.

[2] Come cercare ed estrarre il PID di un programma, è stato già trattato in questa pagina specifica.{3}

[3] Potremmo utilizzare, per trovare e passare il PID di un programma aperto, anche questo algoritmo, il quale chiuderà il programma in un modo un po'più brutale:

Public Sub Button1_Click()

Dim riga As String
Dim plus As String[]
Dim b As Integer

 Shell "ps -aux | grep " & "nome_programma_da_chiudere" To riga

 plus = Split(riga, " ")

 For b = 0 To plus.Max
' Passa a Kill - "forzatamente" - ed in modo distinto ogni elemento dell'array stringa.
Quando il programma passerà a Kill la stringa contenente il numero del PID del programma, questo si chiuderà:
   Try Shell "kill " & plus[b]
 Next

End