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ą
SendMessageTimeoutz 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);
}
}