Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Необходимо разработать приложение-логгер для записи действий пользователя и периодического снятия скриншотов.

  • Приложение должно быть реализовано на C# (при необходимости использования оконных классов желательно использовать WinForms, а не WPF, т.к. планируется встраивание в уже существующий проект на WinForms).
  • После запуска приложение должно постоянно находиться в памяти. Окна или иконки приложения не нужны. Приложение не должно выдавать никаких сообщений об ошибках - только писать их в текстовый лог при необходимости. Приложение не должно препятствовать завершению работы Windows. Приложение не должно сопротивляться закрытию своего процесса, а также не должно запускаться второй раз, если одна копия уже запущена.
  • При запуске приложение должно прописать себя в автозагрузку, если ещё не прописано. По нажатию комбинации клавиш Ctrl + Alt + Shift + S программа должна убрать себя из автозагрузки и завершиться.
  • Следить за появлением на экране новых окон, активацией окон, кликами в них (левые, правые, средние, скроллы колёсиком), нажатием клавиш клавиатуры (в том числе комбинации клавиш) и писать все экранные и клавиатурные события в файл лога в табличку в формате CSV. Каждая новая запись должна добавляться таким образом, чтобы при внезапном завершении программы все накопленные до этого момента записи остались в файле лога.
Поля таблицы:

  • Дата и время (до миллисекунд)
  • Событие
Activate - активация окна;

            LClick - левый клик;

            RClick - правый клик;

            MClick - средний клик;

            ScrollUp - скролл вверх;

            ScrollDown - скрол вниз;

            Drag - перетаскивание (mouse down + mouse move + mouse up);

            ClipboardCopy - копирование в буфер обмена;

            ClipboardPaste, вставка из буфера обмена, нажатие комбинации клавиш, ввод текста с клавиатуры);

  • Название приложения (процесса);
  • Путь к приложению (процессу);
  • Заголовок активного окна;
  • Имя класса активного окна;
  • Текст 

    • Для событий клавиатуры - завершенный ввод текста, после которого последовало не клавиатурное событие или нажатие системных клавиш кроме пробела. То есть надо записывать не каждую кнопку отдельно, а накапливать текст до другого клика или до нажатия Enter, Escape, стрелок и т.д.
    • Для событий буфера обмена - содержимое буфера обмена
    • Для кликов и других событий мыши - текст элемента управления под курсором, который можно добыть с помощью GetWindowText или подобными методами.
  • Координаты мыши относительно верхнего-левого угла активного окна ([X, Y] для клика, [X1, Y1, X2, Y2] - для drag);
  • Имя компьютера;
  • Название рабочей группы / домена компьютера
  • Имя пользователя компьютера;
  • IP адрес (желательно основного адаптера);
  • GUID скриншота активного окна.

    В моменты активации новых окон, любых кликов по элементам управления, нажатия и отпускания кнопок мыши, начала и окончания печати текста или нажатия комбинации клавиш делать скриншот активного окна и сохранять его в формате png в подпапку Captured папки программы, имя файла должно быть случайным GUID, который записывается в соответствующее поле таблицы из п. 4.

В приоритете исполнители, которые уже делали подобные задачи, т.е. могут переиспользовать свой готовый код или точно знают как решить эту задачу. Пожалуйста, указывайте в откликах, если уже делали подобные проекты.
4 года назад
KonstantinArteme
Константин 
38 летРоссия
5 лет в сервисе
Был
2 года назад