API: Procesy

Funkcje do wyszukiwania, monitorowania i zarządzania procesami Windows.

Rejestracja w C++: regManager(js) i regProcesses(js).


proc_find

proc_find(name: string) → object

Wyszukuje proces(y) po nazwie pliku .exe (bez rozróżniania wielkości liter). Jeśli działa wiele instancji — zwraca wszystkie PID-y.

Parametry:

Parametr Typ Opis
name string Nazwa pliku procesu, np. "notepad.exe"

Wynik:

Pole Typ Opis
found bool true — znaleziono co najmniej jedną instancję
pid number PID pierwszej znalezionej (0 jeśli nie znaleziono)
pids number[] Tablica wszystkich PID-ów o tej nazwie
error string Komunikat błędu lub ""

Przykład:

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

if (!f.found) {
    console.log("Proces nie znaleziony");
} else {
    console.log("Pierwszy PID:", f.pid);

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

proc_cpu

proc_cpu(pid: number) → object

Wykorzystanie CPU przez proces w procentach.

Uwaga: Funkcja wykonuje dwa pomiary z 200 ms przerwą — wykonanie jest blokowane w tym czasie.

Parametry:

Parametr Typ Opis
pid number PID procesu

Wynik:

Pole Typ Opis
cpu number Procent CPU (−1 w przypadku błędu)
error string Komunikat błędu lub ""

Przykład:

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

proc_ram

proc_ram(pid: number) → object

Zużycie pamięci (Working Set).

Parametry:

Parametr Typ Opis
pid number PID procesu

Wynik:

Pole Typ Opis
ram_mb number MB (−1 w przypadku błędu)
ram_bytes number Bajty
error string Komunikat błędu lub ""

Przykład:

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

proc_alive

proc_alive(pid: number) → object

Sprawdza, czy proces jest aktywny i odpowiada na komunikaty.

Zachowanie:

  • Proces GUI (ma widoczne okno): sprawdzane za pomocą SendMessageTimeout z limitem czasu 1 sek.
  • Proces w tle (brak okna): responding = alive.

Parametry:

Parametr Typ Opis
pid number PID procesu

Wynik:

Pole Typ Opis
alive bool true — proces istnieje i nie zakończył się
responding bool true — proces odpowiada na komunikaty
error string Komunikat błędu lub ""

Przykład:

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

if (r.alive && !r.responding) {
    console.log("Proces zawieszony!");
}

proc_service

proc_service(pid: number) → object

Sprawdza, czy proces należy do usługi Windows.

Parametry:

Parametr Typ Opis
pid number PID procesu

Wynik:

Pole Typ Opis
is_service bool true — proces jest usługą Windows
service_name string Nazwa usługi lub ""
error string Komunikat błędu lub ""

Przykład:

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

proc_kill

proc_kill(pid: number) → object

Wymusza zakończenie procesu (TerminateProcess).

Parametry:

Parametr Typ Opis
pid number PID procesu

Wynik:

Pole Typ Opis
ok bool true — proces zakończony
error string Komunikat błędu lub ""

Przykład:

let r = proc_kill(1234);
if (r.ok) {
    console.log("Proces zakończony");
} else {
    console.log("Błąd:", r.error);
}

proc_run

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

Uruchamia nowy proces (CreateProcess).

Parametry:

Parametr Typ Opis
path string Pełna ścieżka do .exe
args string (opcjonalnie) Argumenty wiersza poleceń

Wynik:

Pole Typ Opis
ok bool true — proces uruchomiony
pid number PID nowego procesu (0 w przypadku błędu)
error string Komunikat błędu lub ""

Przykłady:

// Bez argumentów
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);

// Z argumentami
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
    console.log("Uruchomiono, PID:", r2.pid);
} else {
    console.log("Błąd:", r2.error);
}

Pełny przykład: monitorowanie pojedynczego procesu

let name = "myapp.exe";

// 1. Znajdź proces
let f = proc_find(name);
if (!f.found) {
    console.log("[OSTRZEŻENIE] Proces nie znaleziony:", name);
} else {
    let pid = f.pid;

    // 2. Zbierz metryki
    let cpu  = proc_cpu(pid);      // blokuje na 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("Aktywny:", live.alive, "| Odpowiada:", live.responding);

    if (svc.is_service) {
        console.log("Usługa:", svc.service_name);
    }
}