API: Procesos
Funciones para buscar, monitorear y gestionar procesos de Windows.
Registro en C++: regManager(js) y regProcesses(js).
proc_find
proc_find(name: string) → object
Busca proceso(s) por nombre de archivo .exe (sin distinguir mayúsculas/minúsculas).
Si hay múltiples instancias en ejecución — devuelve todos los PID.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
name |
string | Nombre del archivo del proceso, ej. "notepad.exe" |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
found |
bool | true — se encontró al menos una instancia |
pid |
number | PID del primer proceso encontrado (0 si no se encuentra) |
pids |
number[] | Array con todos los PID con ese nombre |
error |
string | Mensaje de error o "" |
Ejemplo:
let f = proc_find("notepad.exe");
if (!f.found) {
console.log("Proceso no encontrado");
} else {
console.log("Primer PID:", f.pid);
if (f.pids.length > 1) {
console.log("Múltiples instancias:", JSON.stringify(f.pids));
}
}
proc_cpu
proc_cpu(pid: number) → object
Uso de CPU por el proceso en porcentaje.
Nota: La función toma dos mediciones con una pausa de 200 ms — la ejecución se bloquea durante este tiempo.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
pid |
number | PID del proceso |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
cpu |
number | Porcentaje de CPU (−1 en caso de error) |
error |
string | Mensaje de error o "" |
Ejemplo:
let r = proc_cpu(1234);
if (r.error) {
console.log("Error:", r.error);
} else {
console.log("CPU:", r.cpu.toFixed(1) + "%");
}
proc_ram
proc_ram(pid: number) → object
Consumo de memoria (Working Set).
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
pid |
number | PID del proceso |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
ram_mb |
number | MB (−1 en caso de error) |
ram_bytes |
number | Bytes |
error |
string | Mensaje de error o "" |
Ejemplo:
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
Comprueba si el proceso está activo y responde a mensajes.
Comportamiento:
- Proceso GUI (tiene ventana visible): se verifica mediante
SendMessageTimeoutcon un tiempo de espera de 1 segundo. - Proceso en segundo plano (sin ventana):
responding = alive.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
pid |
number | PID del proceso |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
alive |
bool | true — el proceso existe y no ha finalizado |
responding |
bool | true — el proceso responde a mensajes |
error |
string | Mensaje de error o "" |
Ejemplo:
let r = proc_alive(1234);
console.log("Activo:", r.alive);
console.log("Responde:", r.responding);
if (r.alive && !r.responding) {
console.log("¡El proceso está bloqueado!");
}
proc_service
proc_service(pid: number) → object
Comprueba si el proceso pertenece a un servicio de Windows.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
pid |
number | PID del proceso |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
is_service |
bool | true — el proceso es un servicio de Windows |
service_name |
string | Nombre del servicio o "" |
error |
string | Mensaje de error o "" |
Ejemplo:
let r = proc_service(1234);
if (r.is_service) {
console.log("Servicio:", r.service_name);
}
proc_kill
proc_kill(pid: number) → object
Finaliza un proceso de forma forzosa (TerminateProcess).
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
pid |
number | PID del proceso |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
ok |
bool | true — proceso finalizado |
error |
string | Mensaje de error o "" |
Ejemplo:
let r = proc_kill(1234);
if (r.ok) {
console.log("Proceso finalizado");
} else {
console.log("Error:", r.error);
}
proc_run
proc_run(path: string, args?: string) → object
Inicia un nuevo proceso (CreateProcess).
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
path |
string | Ruta completa al archivo .exe |
args |
string | (opcional) Argumentos de línea de comandos |
Resultado:
| Campo | Tipo | Descripción |
|---|---|---|
ok |
bool | true — proceso iniciado |
pid |
number | PID del nuevo proceso (0 en caso de error) |
error |
string | Mensaje de error o "" |
Ejemplos:
// Sin argumentos
let r = proc_run("C:\\Windows\\notepad.exe");
console.log("PID:", r.pid);
// Con argumentos
let r2 = proc_run("C:\\tools\\app.exe", "--config app.json --verbose");
if (r2.ok) {
console.log("Iniciado, PID:", r2.pid);
} else {
console.log("Error:", r2.error);
}
Ejemplo completo: monitoreo de un solo proceso
let name = "myapp.exe";
// 1. Buscar el proceso
let f = proc_find(name);
if (!f.found) {
console.log("[ADVERTENCIA] Proceso no encontrado:", name);
} else {
let pid = f.pid;
// 2. Recopilar métricas
let cpu = proc_cpu(pid); // se bloquea durante 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("Activo:", live.alive, "| Responde:", live.responding);
if (svc.is_service) {
console.log("Servicio:", svc.service_name);
}
}