API : Processus

Fonctions pour rechercher, surveiller et gérer les processus Windows.

Enregistrement C++ : regManager(js) et regProcesses(js).


proc_find

proc_find(name: string) → object

Recherche un ou plusieurs processus par nom de fichier .exe (insensible à la casse). Si plusieurs instances sont en cours d'exécution — retourne tous les PID.

Paramètres :

Paramètre Type Description
name string Nom du fichier processus, par ex. "notepad.exe"

Résultat :

Champ Type Description
found bool true — au moins une instance trouvée
pid number PID du premier processus trouvé (0 si non trouvé)
pids number[] Tableau de tous les PID portant ce nom
error string Message d'erreur ou ""

Exemple :

let f = proc_find("notepad.exe");

if (!f.found) {
    console.log("Processus non trouvé");
} else {
    console.log("Premier PID :", f.pid);

    if (f.pids.length > 1) {
        console.log("Instances multiples :", JSON.stringify(f.pids));
    }
}

proc_cpu

proc_cpu(pid: number) → object

Utilisation du CPU par le processus en pourcentage.

Note : La fonction effectue deux mesures avec une pause de 200 ms — l'exécution est bloquée pendant ce temps.

Paramètres :

Paramètre Type Description
pid number PID du processus

Résultat :

Champ Type Description
cpu number Pourcentage CPU (−1 en cas d'erreur)
error string Message d'erreur ou ""

Exemple :

let r = proc_cpu(1234);
if (r.error) {
    console.log("Erreur :", r.error);
} else {
    console.log("CPU :", r.cpu.toFixed(1) + "%");
}

proc_ram

proc_ram(pid: number) → object

Consommation mémoire (Working Set).

Paramètres :

Paramètre Type Description
pid number PID du processus

Résultat :

Champ Type Description
ram_mb number Mémoire en Mo (−1 en cas d'erreur)
ram_bytes number Mémoire en octets
error string Message d'erreur ou ""

Exemple :

let r = proc_ram(1234);
console.log("RAM :", r.ram_mb.toFixed(1), "Mo");
console.log("RAM (octets) :", r.ram_bytes);

proc_alive

proc_alive(pid: number) → object

Vérifie si le processus est actif et répond aux messages.

Comportement :

  • Processus GUI (avec fenêtre visible) : vérifié via SendMessageTimeout avec un délai d'attente de 1 seconde.
  • Processus en arrière-plan (sans fenêtre) : responding = alive.

Paramètres :

Paramètre Type Description
pid number PID du processus

Résultat :

Champ Type Description
alive bool true — le processus existe et n'a pas quitté
responding bool true — le processus répond aux messages
error string Message d'erreur ou ""

Exemple :

let r = proc_alive(1234);
console.log("Actif :", r.alive);
console.log("Répond :", r.responding);

if (r.alive && !r.responding) {
    console.log("Le processus est bloqué !");
}

proc_service

proc_service(pid: number) → object

Vérifie si le processus appartient à un service Windows.

Paramètres :

Paramètre Type Description
pid number PID du processus

Résultat :

Champ Type Description
is_service bool true — le processus est un service Windows
service_name string Nom du service ou ""
error string Message d'erreur ou ""

Exemple :

let r = proc_service(1234);
if (r.is_service) {
    console.log("Service :", r.service_name);
}

proc_kill

proc_kill(pid: number) → object

Termine de force un processus (TerminateProcess).

Paramètres :

Paramètre Type Description
pid number PID du processus

Résultat :

Champ Type Description
ok bool true — processus terminé
error string Message d'erreur ou ""

Exemple :

let r = proc_kill(1234);
if (r.ok) {
    console.log("Processus terminé");
} else {
    console.log("Erreur :", r.error);
}

proc_run

proc_run(path: string, args?: string) → object

Démarre un nouveau processus (CreateProcess).

Paramètres :

Paramètre Type Description
path string Chemin complet vers le fichier .exe
args string (optionnel) Arguments de ligne de commande

Résultat :

Champ Type Description
ok bool true — processus démarré
pid number PID du nouveau processus (0 en cas d'erreur)
error string Message d'erreur ou ""

Exemples :

// Sans arguments
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID :", r.pid);

// Avec arguments
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
    console.log("Démarré, PID :", r2.pid);
} else {
    console.log("Erreur :", r2.error);
}

Exemple complet : surveillance d'un processus unique

let name = "myapp.exe";

// 1. Rechercher le processus
let f = proc_find(name);
if (!f.found) {
    console.log("[WARN] Processus non trouvé :", name);
} else {
    let pid = f.pid;

    // 2. Collecter les métriques
    let cpu  = proc_cpu(pid);      // bloque pendant 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) + " Mo");
    console.log("Actif :", live.alive, "| Répond :", live.responding);

    if (svc.is_service) {
        console.log("Service :", svc.service_name);
    }
}