Un qualunque processo del sistema?
Io utilizzo questo codice che, premetto, NON è mio ma ho copia-e-incollato (mi pare) dalla mailing-list ufficiale:
PRIVATE FUNCTION Controllo() AS Boolean
DIM Esito AS String
SHELL "ps aux | grep " & [i]nome_processo[/i] & " | grep -wv grep | wc -l" TO Esito
RETURN IIf(Val(Risposta) > 1, TRUE, FALSE)
END
Se trova il processo il cui nome è nome_processo restituisce True, altrimenti restituisce False.
P.S.:
io lo uso con Application.Name & ".gambas" al posto di nome_processo per verificare che il mio programma non sia già lanciato.
Bello quel codice, Leo, ma sembra un po' troppo incasinato sul comando shell. Io lo ho rivisto in questo modo, ricorrendo a pgrep, che è anche più semplice da usare:
PUBLIC FUNCTION ProcessoAttivo() AS Boolean
DIM Esito AS String
SHELL "pgrep ecomorph" TO Esito
IF Esito = NULL
RETURN FALSE
ELSE
RETURN TRUE
ENDIF
END
Quando un processo non esiste (nel mio caso ecomorph), pgrep non fornisce alcun output provocando un false all'uscita della funzione.