如何从 Electron 应用程序检测桌面空闲时间?

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案1】:

您始终可以通过在 Windows 上使用 XScreenServer、GetLastInputInfo 和在 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()

【讨论】:

真的很有帮助?

以上是关于如何从 Electron 应用程序检测桌面空闲时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Electron 应用程序中隐藏菜单栏?

如何检测到 Electron 应用程序第一次运行?

如何将 Python + Electron JS 编译成桌面应用程序(exe)

如何利用 Electron 把网页变成桌面程序

electron-updater实现electron应用程序更新

Electron 框架中调用 Python 构建桌面应用