API: Процессы
Функции для поиска, мониторинга и управления процессами Windows.
Регистрация в C++: regManager(js) и regProcesses(js).
proc_find
proc_find(name: string) → object
Найти процесс(ы) по имени .exe (без учёта регистра).
Если запущено несколько экземпляров — возвращает все PID.
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
name |
string | Имя файла процесса, например "notepad.exe" |
Результат:
| Поле | Тип | Описание |
|---|---|---|
found |
bool | true — найден хотя бы один экземпляр |
pid |
number | PID первого найденного (0, если не найден) |
pids |
number[] | Массив всех PID с таким именем |
error |
string | Сообщение об ошибке или "" |
Пример:
let f = proc_find("notepad.exe");
if (!f.found) {
console.log("Процесс не найден");
} else {
console.log("Первый PID:", f.pid);
if (f.pids.length > 1) {
console.log("Несколько экземпляров:", JSON.stringify(f.pids));
}
}
proc_cpu
proc_cpu(pid: number) → object
Использование ЦПУ процессом в процентах.
Примечание: Функция делает два замера с паузой 200 мс — выполнение блокируется на это время.
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
pid |
number | PID процесса |
Результат:
| Поле | Тип | Описание |
|---|---|---|
cpu |
number | Процент ЦПУ (−1 при ошибке) |
error |
string | Сообщение об ошибке или "" |
Пример:
let r = proc_cpu(1234);
if (r.error) {
console.log("Ошибка:", r.error);
} else {
console.log("ЦПУ:", r.cpu.toFixed(1) + "%");
}
proc_ram
proc_ram(pid: number) → object
Потребление памяти (Рабочий набор).
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
pid |
number | PID процесса |
Результат:
| Поле | Тип | Описание |
|---|---|---|
ram_mb |
number | МБ (−1 при ошибке) |
ram_bytes |
number | Байты |
error |
string | Сообщение об ошибке или "" |
Пример:
let r = proc_ram(1234);
console.log("ОЗУ:", r.ram_mb.toFixed(1), "МБ");
console.log("ОЗУ (байты):", r.ram_bytes);
proc_alive
proc_alive(pid: number) → object
Проверяет, жив ли процесс и отвечает ли на сообщения.
Поведение:
- GUI-процесс (имеет видимое окно): проверяется через
SendMessageTimeoutс таймаутом 1 сек. - Фоновый процесс (без окна):
responding = alive.
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
pid |
number | PID процесса |
Результат:
| Поле | Тип | Описание |
|---|---|---|
alive |
bool | true — процесс существует и не завершился |
responding |
bool | true — процесс отвечает на сообщения |
error |
string | Сообщение об ошибке или "" |
Пример:
let r = proc_alive(1234);
console.log("Жив:", r.alive);
console.log("Отвечает:", r.responding);
if (r.alive && !r.responding) {
console.log("Процесс завис!");
}
proc_service
proc_service(pid: number) → object
Принадлежит ли процесс службе Windows.
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
pid |
number | PID процесса |
Результат:
| Поле | Тип | Описание |
|---|---|---|
is_service |
bool | true — процесс является службой Windows |
service_name |
string | Имя службы или "" |
error |
string | Сообщение об ошибке или "" |
Пример:
let r = proc_service(1234);
if (r.is_service) {
console.log("Служба:", r.service_name);
}
proc_kill
proc_kill(pid: number) → object
Принудительное завершение процесса (TerminateProcess).
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
pid |
number | PID процесса |
Результат:
| Поле | Тип | Описание |
|---|---|---|
ok |
bool | true — процесс завершён |
error |
string | Сообщение об ошибке или "" |
Пример:
let r = proc_kill(1234);
if (r.ok) {
console.log("Процесс завершён");
} else {
console.log("Ошибка:", r.error);
}
proc_run
proc_run(path: string, args?: string) → object
Запуск нового процесса (CreateProcess).
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
path |
string | Полный путь к .exe |
args |
string | (опционально) Аргументы командной строки |
Результат:
| Поле | Тип | Описание |
|---|---|---|
ok |
bool | true — процесс запущен |
pid |
number | PID нового процесса (0 при ошибке) |
error |
string | Сообщение об ошибке или "" |
Примеры:
// Без аргументов
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);
// С аргументами
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
console.log("Запущен, PID:", r2.pid);
} else {
console.log("Ошибка:", r2.error);
}
Полный пример: мониторинг одного процесса
let name = "myapp.exe";
// 1. Найти процесс
let f = proc_find(name);
if (!f.found) {
console.log("[WARN] Процесс не найден:", name);
} else {
let pid = f.pid;
// 2. Собрать метрики
let cpu = proc_cpu(pid); // блокирует на 200 мс
let ram = proc_ram(pid);
let live = proc_alive(pid);
let svc = proc_service(pid);
console.log("PID:", pid);
console.log("ЦПУ:", cpu.cpu.toFixed(1) + "%");
console.log("ОЗУ:", ram.ram_mb.toFixed(1) + " МБ");
console.log("Жив:", live.alive, "| Отвечает:", live.responding);
if (svc.is_service) {
console.log("Служба:", svc.service_name);
}
}