对于未来的项目,我需要跟踪用户活动以记录他们的生产力时间。例如,我想检测当前在Adobe Photoshop等应用程序中打开的文件,并检测用户何时切换到其他应用程序或其他文件/选项卡。
要制作我的桌面应用程序,我希望使用电子JS。
你能给我一些跟踪的曲目吗?我没有找到任何允许我这样做的nodejs库,但我知道这是可能的,因为它已经通过电子应用程序完成了,例如:
- 克罗诺斯 https://electronjs.org/apps/chronos-timetracker
- 佩莫 https://electronjs.org/apps/paymo-time-tracker
- 屏幕感知 https://electronjs.org/apps/screenaware
还有一个似乎不是用电子构建的应用程序: https://desktime.com/features
感谢您的帮助
node.js 没有您需要的功能,但它可以调用外部程序来完成工作。在我看来,您需要有一个 PowerShell 脚本(或 C# 程序(才能从操作系统获取活动窗口,并找到该窗口后面进程的所有打开文件句柄。您将从节点调用此脚本,并围绕它构建您的 GUI。
一个很好的起点是这个模块 active-window,它的工作原理与我描述的完全一样:nodejs 进程调用一些外部脚本(在 bash/PowerShell 中(,这些脚本使用特定于操作系统的原语来获取活动窗口。
要获取进程打开的文件列表,您可以使用 Sysinternals 中的句柄实用程序。但是,您可能会遇到一个小问题:像Photoshop这样的应用程序通常不会保持文件句柄打开,它们只是在保存文件时打开它。这意味着您将无法始终检测到打开的文件。我想反复试验是你的朋友。
要查找打开的选项卡,它更复杂。选项卡通常指示应用的内部状态,此信息保存在内存中。某些应用可能会提供 API,但不能保证。我想截图是去这里的方式。