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
SendMessageTimeoutmit 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);
}
}