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

进程的 CPU 使用率(百分比)。

注意: 此函数会进行两次测量,中间有 200 毫秒 的暂停 — 在此期间执行会被阻塞。

参数:

参数 类型 描述
pid number 进程 PID

返回值:

字段 类型 描述
cpu number CPU 百分比(出错时为 −1
error string 错误信息或 ""

示例:

let r = proc_cpu(1234);
if (r.error) {
    console.log("错误:", r.error);
} else {
    console.log("CPU:", 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("RAM:", r.ram_mb.toFixed(1), "MB");
console.log("RAM (bytes):", 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("[警告] 未找到进程:", 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.cpu.toFixed(1) + "%");
    console.log("RAM:", ram.ram_mb.toFixed(1) + " MB");
    console.log("存活:", live.alive, "| 响应:", live.responding);

    if (svc.is_service) {
        console.log("服务:", svc.service_name);
    }
}