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