2015-06-16 3 views
2

Использование NodeJS Я хочу получить список открытых приложений в Windows.Список запущенных приложений с использованием NodeJS

Что-то вдоль линий:

exec("tasklist", function (error, stdout, stderr) { 

    for(var i=0;i<stdout.length;i++) 
    { 
     if(stdout[i]['name'].indexOf('ll_') > -1) 
     { 
      appList.push({'id':stdout[i]['id'],'name':stdout[i]['name']}); 
     } 
    } 

}); 

Где appList является объектом запуска приложений с их ID и имя, если они начинают с ll_.

Как это сделать?

ответ

4

(я не запускать Windows, так что следующий не тестировался)

Во-первых, установить tasklist:

$ npm install tasklist 

Тогда , используйте следующий сценарий:

var tasklist = require('tasklist'); 

tasklist(function(err, tasks) { 
    if (err) throw err; // TODO: proper error handling 
    var appList = tasks.filter(function(task) { 
    return task.imageName.indexOf('ll_') === 0; 
    }).map(function(task) { 
    return { 
     id : task.pid, // XXX: is that the same as your `id`? 
     name : task.imageName, 
    }; 
    }); 
}); 
+1

Спасибо, ваш ответ помог. Однако для будущих ссылок кажется, что модуль 'tasklist' изменился и должен использоваться с обещаниями вместо обратных вызовов. Таким образом, вызов будет «tasklist(). Then (function (tasks) {.....});' –

0

Поскольку stdout - это просто большая строка, ему нужен синтаксический анализ.

Один из способов сделать это будет:

var exec = require('child_process').exec; 

exec('tasklist', function(error, stdout, stderr) { 
    var lines = stdout.trim().split("\n"); //split by line 
    var processes = lines.slice(2); //remove the table headers 
    var parsed = processes.map(function(process) { 
     return process.match(/(.+?)[\s]+?(\d+)/); //match the process name and ID 
    }); 
    var filtered = parsed.filter(function(process) { 
     return /^ll_/.test(process[1]); //filter out process names starting with ll_ 
    }); 
    console.log(filtered); 
}); 
Смежные вопросы