You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js:如何检测指定程序何时启动?

好问题!在Windows 10环境下,Node.js本身并没有内置模块直接提供监听特定程序启动的事件,但我们可以通过第三方库或者调用Windows系统原生能力来实现你想要的效果。下面给你两种实用方案,按需选择:

方案一:使用ps-list+轮询检测(简单易上手)

这种方案通过定时获取系统进程列表,对比发现新启动的目标程序,逻辑直观,还能跨平台使用。

首先安装依赖:

npm install ps-list

然后是示例代码,替换targetProcessName为你要检测的程序即可:

const psList = require('ps-list');
const targetProcessName = 'notepad.exe'; // 改成你关注的程序,比如chrome.exe
let knownPids = new Set();

// 初始化已存在的目标进程PID集合
async function initKnownProcesses() {
  const processes = await psList();
  processes.forEach(proc => {
    if (proc.name === targetProcessName) {
      knownPids.add(proc.pid);
    }
  });
}

// 定时检查新进程
async function checkNewProcesses() {
  const processes = await psList();
  processes.forEach(proc => {
    if (proc.name === targetProcessName && !knownPids.has(proc.pid)) {
      console.log(`🎉 检测到程序 ${targetProcessName} 启动!PID: ${proc.pid}`);
      // 在这里执行你的业务逻辑,比如记录日志、触发通知等
      knownPids.add(proc.pid);
    }
  });
}

// 启动检测流程
(async () => {
  await initKnownProcesses();
  setInterval(checkNewProcesses, 1000); // 每秒检测一次,可根据需求调整间隔
})();

优缺点:

  • 优点:实现简单,无需依赖Windows特定API,跨平台兼容。
  • 缺点:轮询会有轻微延迟,间隔越短资源占用略高(一般1秒间隔完全没问题)。
方案二:Windows WMI事件监听(实时高效)

如果追求零延迟的实时检测,直接用Windows原生的WMI(Windows Management Instrumentation)事件监听是最佳选择,它能在进程创建瞬间触发回调,不需要轮询。

我们可以用wmi-client库来简化WMI调用:

npm install wmi-client

示例代码如下:

const WmiClient = require('wmi-client');
const client = new WmiClient({
  host: 'localhost',
  namespace: 'root\\CIMV2'
});

const targetProcessName = 'notepad.exe';

// 监听进程创建事件,指定只关注目标程序
client.query(
  `SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = '${targetProcessName}'`,
  (err, results) => {
    if (err) {
      console.error('监听进程事件出错:', err);
      return;
    }

    results.forEach(event => {
      const processInfo = event.TargetInstance;
      console.log(`🚀 程序 ${processInfo.Name} 已启动,PID: ${processInfo.ProcessId}`);
      // 这里写你的处理逻辑
    });
  }
);

// 保持脚本运行(否则脚本会直接退出)
process.stdin.resume();

优缺点:

  • 优点:实时性拉满,无延迟,系统资源占用极低。
  • 缺点:仅支持Windows系统,依赖WMI服务(Windows默认开启,若被禁用需手动开启),部分杀毒软件可能会拦截WMI查询,需确保脚本有足够权限。
额外注意事项
  • 程序名称要写完整的exe文件名,比如chrome.exe而非Chrome,Windows进程名不区分大小写,但最好和任务管理器里显示的一致。
  • 如果要检测管理员权限启动的程序,你的Node.js脚本也需要以管理员权限运行,否则可能无法获取到该进程的信息。
  • 若使用WMI方案,遇到权限问题时,右键点击终端选择“以管理员身份运行”再启动脚本即可。

内容的提问来源于stack exchange,提问作者East Arctica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:27:52