正如标题所示,我需要找到一种方法来获取正在运行的应用程序(atom、chrome 等)的列表。我目前正在使用:
var exec = require('child_process').exec
exec('tasklist', (error, stdout, stderr) {
// stdout contains a list of running processes.
})
但是,这也提供了服务和隐藏应用程序(redis 服务器等),并且不会返回窗口当前是否处于活动状态。有办法做到这一点吗?作为参考,这是针对 Windows 系统的,但跨操作系统解决方案会更好。
我发现美妙的 winctl 库让我可以做我需要的事情。我使用了以下代码:
const winctl = require('winctl')
// Iterate over all windows with a custom filter
winctl.FindWindows(win => win.isVisible() && win.getTitle()).then(windows => {
console.log("Visible windows:");
windows.sort((a,b) => a.getTitle().localeCompare(b.getTitle())).forEach(window => console.log(" - %s [pid=%d, hwnd=%d, parent=%d]", window.getTitle(), window.getPid(), window.getHwnd(), window.getParent()));
});
winctl 为我工作,我能够获取当前活动/前台应用程序,以及所有后台应用程序的列表,此外,当您更改应用程序时,它还会为您提供更改后的应用程序详细信息和以前的应用程序详细信息。