Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
(ByVal dwFlags As Long, ByVal dwProcessID As Long) As Long 'Lo snapshot restituisce un'array contenente, per ogni 'processo attivo, una struttura dati PROCESSENTRY32 la cui 'definizione e' la seguente Type PROCESSENTRY32 dwSize As Long 'Dimensione della struttura cntUsage As Long 'Numero di riferimento del processo th32ProcessID As Long 'ID del processo th32DefaultHeapID As Long 'ID dell'Heap del processo th32ModuleID As Long 'ID del modulo del processo cntThreads As Long 'Numero di Thread lanciati dal processo th32ParentProcessID As Long 'ID del processo Parent pcPriClassBase As Long 'Priorita' di base dei Tread lanciati 'dal processo szExeFile As String * 260 'Nome completo del path dell'eseguibile dwFlags As Long End Type 'I valori piu' importanti di questa struttura sono il 'th32ProcessID che ci restituisce il numero univoco di 'processo, e il campo szExeFile che contiene il nome 'dell'eseguibile completo del path. Ottenuto quindi lo 'snapshot basta scorrerlo dall'inizio alla fine utilizzando 'altre due funzioni le cui dichiarazioni sono: Declare Function Process32First Lib "kernel32" _ (ByVal hObject As Long, p As PROCESSENTRY32) As Boolean Declare Function Process32Next Lib "kernel32" _ (ByVal hObject As Long, p As PROCESSENTRY32) As Boolean 'La prima restituisce il primo processo della lista, e la 'seconda scorre l'array dei processi fino alla fine della 'lista. Bastera' quindi scorrere tutta la lista finche' il 'valore di ritorno della funzione Process32Next e' diverso 'da 0 ed ottenere tramite il campo szExeFile tutti i nomi, 'completi del path, dei processi in esecuzione. Ottenere la lista dei processi attivi Grazie alle funzioni TOOLHELP presenti nella libreria kernel32.dll di Windows95, e' possibile 'fotografare' la lista dei processi attivi in un determinato momento e quindi sapere quali programmi sono in esecuzione. La funzione per creare tale 'snapshot' e' la seguente: |