【问题标题】:How to detect desktop idle time from an Electron app?如何从 Electron 应用程序检测桌面空闲时间?
【发布时间】:2022-01-19 16:34:38
【问题描述】:

我需要我的 Electron 应用程序在一段时间内响应用户闲置(操作系统上的任何程序都没有鼠标或键盘输入)。

如何根据此类空闲时间数据触发函数?

【问题讨论】:

    标签: javascript electron


    【解决方案1】:

    您始终可以通过在 Windows 上使用 XScreenServerGetLastInputInfo 和在 Mac 上使用 CGEventSourceSecondsSinceLastEventType 在 Linux 上检测空闲时间

    我已经使用这些 API 发布了desktop-idle,您可以查看源代码https://github.com/bithavoc/node-desktop-idle

    更新:

    Electron 3 用户可以使用 power monitor API 来实现相同的目标:https://electronjs.org/docs/api/power-monitor

    【讨论】:

    • 我发现这个很难安装。
    • @jlh 如果您使用的是 electron 3,您可以将电源监视器用于相同目的:electronjs.org/docs/api/power-monitor
    • 非常感谢,这样好多了!
    • @jlh 有没有人有一些很好的例子来说明如何使用它?我只是在尝试使用 powerMonitor.getSystemIdleTime 并且收到诸如“getSystemIdleTime 不是函数”之类的错误。似乎没有任何项目示例使用它,因此如果您可以共享一些代码会很有帮助。
    • @jih 你使用的是 Electron 3 及以上版本吗?
    【解决方案2】:

    有些人编写了与 OSX、Windows 和 Linux 的本机平台代码挂钩的节点库来完成此任务。

    我最终使用这个库在我的电子应用程序中完成了同样的事情: https://github.com/paulcbetts/node-system-idle-time

    它在 npm 上发布为 @paulcbetts/system-idle-time

    我在 OSX 上对其进行了测试,它似乎在那里运行良好。

    我最初确实收到“模块版本不匹配预期 50 得到 46”错误,但运行此命令将其清除:

    npm rebuild --runtime=electron --target=1.4.3 --disturl=https://atom.io/download/atom-shell --abi=49

    用你正在使用的任何版本的电子替换目标。

    【讨论】:

      【解决方案3】:

      由于电子使用节点,你应该结帐RobotJS。这些东西是特定于平台的,因此它确实需要一些其他依赖项,但您可以监视鼠标/键盘并查看它是否已更改或控制它(因此得名)。

      【讨论】:

        【解决方案4】:

        查看Electron Power monitor API's并使用

        powerMonitor.getSystemIdleTime()
        

        【讨论】:

        • 真的很有帮助?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        • 2017-03-13
        相关资源
        最近更新 更多