【问题标题】:How to check when the computer is idle in NodeJS?如何在 NodeJS 中检查计算机何时空闲?
【发布时间】:2016-12-07 01:45:42
【问题描述】:

我想在 NodeJS 的后台运行一个进程,等待计算机闲置 10 分钟。我的意思是用户不要触摸键盘或鼠标。

换句话说:我想在任何窗口中监听键盘和鼠标事件,并在它发生时通知我的应用程序。

对于这个任务,我可以使用普通节点、nw.js 或电子。

我认为我必须使用 C++、本地模块和 DLL。但我希望有更好更简单的解决方案。

你有吗?

【问题讨论】:

  • 有点像键盘记录器,只是没有实际记录按键?
  • 搜索的好主意。键盘记录器+鼠标记录器
  • 嗯...不知道点击任何与键盘记录器相关的东西会有多好
  • 找到这个:stackoverflow.com/a/33693917/1229624。但寻找更简单的解决方案
  • 我在 Electron 中找到了这个 API screen.getCursorScreenPoint(),用于监控鼠标移动。现在只需要监控按键

标签: node.js electron node-webkit nwjs


【解决方案1】:

【讨论】:

    【解决方案2】:

    我能够使用ioreg from this previous answer 获取用户在 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);
    

    【讨论】:

      【解决方案3】:

      您可以尝试https://github.com/bithavoc/node-desktop-idle,它适用于 macOS、Windows、Linux、FreeBSD 和 OpenBSD。我为 Electron 构建了它,但它通常在 Node.js 中工作。

      【讨论】:

        【解决方案4】:

        我到达这里以某种方式在电子中搜索相同的东西,如果你也继续,这就是我从 Electron Power monitor API's 中找到的方法

        const {powerMonitor} = require('electron'); 
        const idle = powerMonitor.getSystemIdleTime() // it returns in seconds when I am writing this
        console.log('Current System Idle Time - ', idle); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-23
          • 1970-01-01
          相关资源
          最近更新 更多