API: Prozesse

Funktionen zum Auffinden, Überwachen und Verwalten von Windows-Prozessen.

C++-Registrierung: regManager(js) und regProcesses(js).


proc_find

proc_find(name: string) → object

Findet Prozess(e) anhand des .exe-Namens (Groß-/Kleinschreibung wird ignoriert). Wenn mehrere Instanzen laufen – werden alle PIDs zurückgegeben.

Parameter:

Parameter Typ Beschreibung
name string Prozessdateiname, z.B. "notepad.exe"

Ergebnis:

Feld Typ Beschreibung
found bool true – mindestens eine Instanz gefunden
pid number PID des ersten gefundenen Prozesses (0, wenn nicht gefunden)
pids number[] Array aller PIDs mit diesem Namen
error string Fehlermeldung oder ""

Beispiel:

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

if (!f.found) {
    console.log("Prozess nicht gefunden");
} else {
    console.log("Erste PID:", f.pid);

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

proc_cpu

proc_cpu(pid: number) → object

CPU-Auslastung des Prozesses in Prozent.

Hinweis: Die Funktion nimmt zwei Messungen mit einer Pause von 200 ms vor – die Ausführung wird während dieser Zeit blockiert.

Parameter:

Parameter Typ Beschreibung
pid number Prozess-PID

Ergebnis:

Feld Typ Beschreibung
cpu number CPU in Prozent (−1 bei Fehler)
error string Fehlermeldung oder ""

Beispiel:

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

proc_ram

proc_ram(pid: number) → object

Speicherverbrauch (Working Set).

Parameter:

Parameter Typ Beschreibung
pid number Prozess-PID

Ergebnis:

Feld Typ Beschreibung
ram_mb number MB (−1 bei Fehler)
ram_bytes number Bytes
error string Fehlermeldung oder ""

Beispiel:

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

proc_alive

proc_alive(pid: number) → object

Prüft, ob der Prozess aktiv ist und auf Nachrichten reagiert.

Verhalten:

  • GUI-Prozess (hat ein sichtbares Fenster): Prüfung via SendMessageTimeout mit einem Timeout von 1 Sekunde.
  • Hintergrundprozess (kein Fenster): responding = alive.

Parameter:

Parameter Typ Beschreibung
pid number Prozess-PID

Ergebnis:

Feld Typ Beschreibung
alive bool true – Prozess existiert und wurde nicht beendet
responding bool true – Prozess reagiert auf Nachrichten
error string Fehlermeldung oder ""

Beispiel:

let r = proc_alive(1234);
console.log("Aktiv:", r.alive);
console.log("Reagiert:", r.responding);

if (r.alive && !r.responding) {
    console.log("Prozess hängt!");
}

proc_service

proc_service(pid: number) → object

Prüft, ob der Prozess zu einem Windows-Dienst gehört.

Parameter:

Parameter Typ Beschreibung
pid number Prozess-PID

Ergebnis:

Feld Typ Beschreibung
is_service bool true – Prozess ist ein Windows-Dienst
service_name string Dienstname oder ""
error string Fehlermeldung oder ""

Beispiel:

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

proc_kill

proc_kill(pid: number) → object

Beendet einen Prozess gewaltsam (TerminateProcess).

Parameter:

Parameter Typ Beschreibung
pid number Prozess-PID

Ergebnis:

Feld Typ Beschreibung
ok bool true – Prozess wurde beendet
error string Fehlermeldung oder ""

Beispiel:

let r = proc_kill(1234);
if (r.ok) {
    console.log("Prozess beendet");
} else {
    console.log("Fehler:", r.error);
}

proc_run

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

Startet einen neuen Prozess (CreateProcess).

Parameter:

Parameter Typ Beschreibung
path string Vollständiger Pfad zur .exe
args string (optional) Befehlszeilenargumente

Ergebnis:

Feld Typ Beschreibung
ok bool true – Prozess wurde gestartet
pid number PID des neuen Prozesses (0 bei Fehler)
error string Fehlermeldung oder ""

Beispiele:

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

// Mit Argumenten
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
    console.log("Gestartet, PID:", r2.pid);
} else {
    console.log("Fehler:", r2.error);
}

Vollständiges Beispiel: Überwachung eines einzelnen Prozesses

let name = "myapp.exe";

// 1. Prozess finden
let f = proc_find(name);
if (!f.found) {
    console.log("[WARN] Prozess nicht gefunden:", name);
} else {
    let pid = f.pid;

    // 2. Metriken sammeln
    let cpu  = proc_cpu(pid);      // blockiert für 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("Aktiv:", live.alive, "| Reagiert:", live.responding);

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