Можно отслеживать, какие приложения используются и какой файл открывается с помощью nodejs. - PullRequest
0 голосов
/ 25 октября 2018

Для будущего проекта мне нужно отслеживать активность пользователей, чтобы записывать время их продуктивности.Я хочу определить, какой файл в настоящее время открыт в таких приложениях, как Adobe Photoshop, например, и определить, когда пользователь переключается на другое приложение или другой файл / вкладку.

Для создания настольного приложения я хочу использовать электронный JS

Можете ли вы дать мне несколько треков?Я не нахожу библиотеку nodejs, которая позволяла бы мне это делать, но я знаю, что это возможно, потому что это уже сделано с приложениями eletron, такими как:

И другое приложение, которое, кажется, не построено с электроном: https://desktime.com/features

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 25 октября 2018

node.js не имеет необходимых вам возможностей, однако он может вызывать внешние программы для выполнения работы.На мой взгляд, вам потребуется сценарий PowerShell (или программа на C #), чтобы получить активное окно из операционной системы и найти все дескрипторы открытых файлов для процесса за этим окном.Вы должны вызвать этот скрипт из узла и построить вокруг него свой графический интерфейс.

Хорошей отправной точкой является этот модуль active-window , который работает точно так, как я описал: процесс nodejs вызывает некоторый внешнийсценарии (в bash / PowerShell), которые используют специфические для ОС примитивы для получения активного окна.

Чтобы получить список файлов, открытых процессом, вы можете использовать утилиту handle от Sysinternals.Однако вы можете столкнуться с небольшой проблемой: приложения, такие как Photoshop, обычно не держат дескриптор файла открытым, они просто открывают его при сохранении файла.Это означает, что вы не всегда сможете обнаружить открытые файлы.Я полагаю, что ваш друг здесь методом проб и ошибок.

Найти открытые вкладки сложнее.Вкладки обычно показывают внутреннее состояние приложения, и эта информация хранится в памяти.Некоторые приложения могут предлагать API, но это не гарантируется.Я думаю, что скриншоты - это путь сюда.

...