Differenze tra le versioni di "Chiudere programmi esterni"
Riga 46: | Riga 46: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | <FONT color=#B22222>Integrazione dei due precedenti metodi.</font> | ||
+ | |||
+ | Possiamo passare al <SPAN style="text-decoration:underline">comando</span> ''Kill'' anche il PID di un programma esterno, lanciato dal nostro programma.gambas e gestito mediante "''Process''". | ||
+ | <BR>L'algoritmo per ottenere il numero del PID mediante il metodo "'' .Id''" di "''Process''" di un programma esterno gestito con "''Process''", è trattato in [[Individuare_ed_estrarre_il_PID_di_un_programma|questa pagina specifica]]. | ||
Versione delle 19:49, 14 mar 2012
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 gestito 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 gestito mediante "process", oppure non sia stato aperto dal programma.gambas:
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
Integrazione dei due precedenti metodi.
Possiamo passare al comando Kill anche il PID di un programma esterno, lanciato dal nostro programma.gambas e gestito mediante "Process".
L'algoritmo per ottenere il numero del PID mediante il metodo " .Id" di "Process" di un programma esterno gestito con "Process", è trattato in questa pagina specifica.
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:
Public Sub Button1_Click()
Dim riga As String
Dim plus As String[]
Shell "pgrep -f -l nome_programma_da_chiudere" To riga
plus = Split(riga, " ")
' Passa a Kill il primo elemento dell'array stringa,
' il quale, essendo parte della stringa generata dal comando "pgrep",
' contiene sempre il numero del PID del programma:
Shell "kill " & plus[0]
End
oppure quest'altro che, però, procederà in modo un po' più... brutale alla chiusura del programma:
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 Kill riceverà l'elemento contenente la stringa con il numero del PID del programma, questo si chiuderà: Try Shell "kill " & plus[b] Next End