我想在 NodeJS 的后台运行一个进程,等待计算机闲置 10 分钟。我的意思是用户不要触摸键盘或鼠标。
换句话说:我想在任何窗口中监听键盘和鼠标事件,并在它发生时通知我的应用程序。
对于这个任务,我可以使用普通节点、nw.js 或电子。
我认为我必须使用 C++、本机模块和 DLL。但我希望有一个更好更简单的解决方案。
你有?
我想在 NodeJS 的后台运行一个进程,等待计算机闲置 10 分钟。我的意思是用户不要触摸键盘或鼠标。
换句话说:我想在任何窗口中监听键盘和鼠标事件,并在它发生时通知我的应用程序。
对于这个任务,我可以使用普通节点、nw.js 或电子。
我认为我必须使用 C++、本机模块和 DLL。但我希望有一个更好更简单的解决方案。
你有?
您可以尝试https://github.com/bithavoc/node-desktop-idle,它适用于 macOS、Windows、Linux、FreeBSD 和 OpenBSD。我为 Electron 构建了它,但它通常在 Node.js 中工作。
我到达这里以某种方式在电子中搜索相同的东西,如果你也继续,这就是我从Electron Power monitor API 中找到它的方式
const {powerMonitor} = require('electron');
const idle = powerMonitor.getSystemIdleTime() // it returns in seconds when I am writing this
console.log('Current System Idle Time - ', idle);
我能够使用ioreg
这个先前的答案获得用户在 OSX 上的空闲时间。
var child_process = require('child_process');
function idleTime(callback) {
var command = `ioreg -c IOHIDSystem | awk '/HIDIdleTime/ {print $NF/1000000000; exit}'`;
child_process.exec(command, function(err, stdout, stderr) {
return err ? callback(err) : callback(null, stdout.trim());
});
}
setInterval(function() {
idleTime(function(err, duration) {
console.log(`idle for ${Math.round(duration)} seconds`)
})
}, 1000);