API: Processi
Funzioni per individuare, monitorare e gestire processi Windows.
Registrazione C++: regManager(js) e regProcesses(js).
proc_find
proc_find(name: string) → object
Trova uno o più processi per nome .exe (senza distinzione tra maiuscole e minuscole).
Se sono in esecuzione più istanze — restituisce tutti i PID.
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
name |
string | Nome del file del processo, es. "notepad.exe" |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
found |
bool | true — trovata almeno un'istanza |
pid |
number | PID del primo trovato (0 se non trovato) |
pids |
number[] | Array di tutti i PID con quel nome |
error |
string | Messaggio di errore o "" |
Esempio:
let f = proc_find("notepad.exe");
if (!f.found) {
console.log("Processo non trovato");
} else {
console.log("Primo PID:", f.pid);
if (f.pids.length > 1) {
console.log("Istanze multiple:", JSON.stringify(f.pids));
}
}
proc_cpu
proc_cpu(pid: number) → object
Utilizzo della CPU da parte del processo in percentuale.
Nota: La funzione effettua due misurazioni con una pausa di 200 ms — l'esecuzione viene bloccata durante questo intervallo.
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
pid |
number | PID del processo |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
cpu |
number | Percentuale CPU (−1 in caso di errore) |
error |
string | Messaggio di errore o "" |
Esempio:
let r = proc_cpu(1234);
if (r.error) {
console.log("Errore:", r.error);
} else {
console.log("CPU:", r.cpu.toFixed(1) + "%");
}
proc_ram
proc_ram(pid: number) → object
Consumo di memoria (Working Set).
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
pid |
number | PID del processo |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
ram_mb |
number | MB (−1 in caso di errore) |
ram_bytes |
number | Byte |
error |
string | Messaggio di errore o "" |
Esempio:
let r = proc_ram(1234);
console.log("RAM:", r.ram_mb.toFixed(1), "MB");
console.log("RAM (byte):", r.ram_bytes);
proc_alive
proc_alive(pid: number) → object
Verifica se il processo è attivo e risponde ai messaggi.
Comportamento:
- Processo GUI (ha una finestra visibile): verificato tramite
SendMessageTimeoutcon un timeout di 1 secondo. - Processo in background (nessuna finestra):
responding = alive.
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
pid |
number | PID del processo |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
alive |
bool | true — il processo esiste e non è terminato |
responding |
bool | true — il processo risponde ai messaggi |
error |
string | Messaggio di errore o "" |
Esempio:
let r = proc_alive(1234);
console.log("Attivo:", r.alive);
console.log("Risponde:", r.responding);
if (r.alive && !r.responding) {
console.log("Il processo è bloccato!");
}
proc_service
proc_service(pid: number) → object
Verifica se il processo appartiene a un servizio Windows.
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
pid |
number | PID del processo |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
is_service |
bool | true — il processo è un servizio Windows |
service_name |
string | Nome del servizio o "" |
error |
string | Messaggio di errore o "" |
Esempio:
let r = proc_service(1234);
if (r.is_service) {
console.log("Servizio:", r.service_name);
}
proc_kill
proc_kill(pid: number) → object
Termina forzatamente un processo (TerminateProcess).
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
pid |
number | PID del processo |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
ok |
bool | true — processo terminato |
error |
string | Messaggio di errore o "" |
Esempio:
let r = proc_kill(1234);
if (r.ok) {
console.log("Processo terminato");
} else {
console.log("Errore:", r.error);
}
proc_run
proc_run(path: string, args?: string) → object
Avvia un nuovo processo (CreateProcess).
Parametri:
| Parametro | Tipo | Descrizione |
|---|---|---|
path |
string | Percorso completo del file .exe |
args |
string | (opzionale) Argomenti della riga di comando |
Risultato:
| Campo | Tipo | Descrizione |
|---|---|---|
ok |
bool | true — processo avviato |
pid |
number | PID del nuovo processo (0 in caso di errore) |
error |
string | Messaggio di errore o "" |
Esempi:
// Senza argomenti
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);
// Con argomenti
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
console.log("Avviato, PID:", r2.pid);
} else {
console.log("Errore:", r2.error);
}
Esempio completo: monitoraggio di un singolo processo
let name = "myapp.exe";
// 1. Trova il processo
let f = proc_find(name);
if (!f.found) {
console.log("[WARN] Processo non trovato:", name);
} else {
let pid = f.pid;
// 2. Raccogli metriche
let cpu = proc_cpu(pid); // si blocca per 200 ms
let ram = proc_ram(pid);
let live = proc_alive(pid);
let svc = proc_service(pid);
console.log("PID:", pid);
console.log("CPU:", cpu.cpu.toFixed(1) + "%");
console.log("RAM:", ram.ram_mb.toFixed(1) + " MB");
console.log("Attivo:", live.alive, "| Risponde:", live.responding);
if (svc.is_service) {
console.log("Servizio:", svc.service_name);
}
}