3

对于未来的项目,我需要跟踪用户活动以记录他们的工作时间。例如,我想检测当前在 Adob​​e Photoshop 等应用程序中打开了哪个文件,并检测用户何时切换到其他应用程序或其他文件/选项卡。

为了制作我的桌面应用程序,我希望使用电子 JS

你能给我一些跟踪吗?我没有找到任何允许我这样做的 nodejs 库,但我知道这是可能的,因为它已经使用 eletron 应用程序完成了,例如:

另一个似乎不是用电子构建的应用程序: https ://desktime.com/features

谢谢你的帮助

4

1 回答 1

1

node.js 没有您需要的功能,但是它可以调用外部程序来完成工作。在我看来,您需要一个 PowerShell 脚本(或 C# 程序)来从操作系统获取活动窗口,并为该窗口后面的进程找到所有打开的文件句柄。您将从节点调用此脚本,并围绕它构建您的 gui。

一个很好的起点是这个模块active-window,它的工作方式与我描述的完全一样:nodejs 进程调用一些外部脚本(在 bash/PowerShell 中),这些脚本使用特定于操作系统的原语来获取活动窗口。

要获取进程打开的文件列表,您可以使用 Sysinternals 的句柄实用程序。但是您可能会遇到一个小问题:像 Photoshop 这样的应用程序通常不会保持文件句柄打开,它们只是在保存文件时打开它。这意味着您将无法始终检测到打开的文件。我想反复试验是你的朋友。

要查找打开的选项卡,它会更复杂。选项卡通常指示应用程序的内部状态,并且此信息保存在内存中。某些应用程序可能会提供 API,但这并不能保证。我想截图是去这里的方式。

于 2018-10-25T14:25:09.363 回答