首页 新闻 搜索 专区 学院

node 怎么获取任务管理器的进程

0
悬赏园豆:20 [已解决问题] 解决于 2020-10-16 14:30

例如windows的任务管理器的进程列表

Lsever的主页 Lsever | 初学一级 | 园豆:112
提问于:2020-10-13 14:34
< >
分享
最佳答案
0
收获园豆:20
2012 | 高人七级 |园豆:21072 | 2020-10-14 08:21
const child = require('child_process')
const iconv = require('iconv-lite')
const exec = child.exec

function viewProcessMessage (name, cb) {
  let cmd = process.platform === 'win32' ? 'tasklist' : 'ps aux'
  exec(cmd, {encoding: "gbk"},function (err, stdout, stderr) {
    if (err) {
      return console.error(err)
    }
    iconv.decode(stdout, "GBK").split('\n').filter((line) => {
      let processMessage = line.trim().split(/\s+/)
      console.log(processMessage)
      let processName = processMessage[0] //processMessage[0]进程名称 , processMessage[1]进程id
      if (processName === name) {
        return cb(processMessage[1])
      }
    })
  })
}

利用上诉代码获取到了所有的windows进程,获取的参数如下:

请问怎么区分是软件进程还是系统进程以及如何获取软件名称和对应的图标?
例如像下图这样的:

Lsever | 园豆:112 (初学一级) | 2020-10-14 10:09

@Lsever:
1 进程区分一种方式:进程启动的账号不一样可以区分
2 图标:图标一般在执行文件的目录地方,分为和执行文件一体和独立的文件两种。 一体的可以尝试从执行文件取资源取到图标

2012 | 园豆:21072 (高人七级) | 2020-10-15 08:32

@2012: 进程启动的账号指的是?会话名?会话名返回两种值一种是services,另一种是Console.不知道你说的是否是这个意思。

Lsever | 园豆:112 (初学一级) | 2020-10-15 14:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册