如何从 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 应用程序检测桌面空闲时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Python + Electron JS 编译成桌面应用程序(exe)