Запись действий пользователя (C#)
10 000 руб. за проект
Разработать приложение-логгер для записи действий пользователя и снятия скриншотов действий пользователя.
LClick - левый клик;
RClick - правый клик;
MClick - средний клик;
ScrollUp - скролл вверх;
ScrollDown - скрол вниз;
Drag - перетаскивание (mouse down + mouse move + mouse up);
ClipboardCopy - копирование в буфер обмена;
ClipboardPaste, вставка из буфера обмена,
KeyboardShorcut - нажатие комбинации клавиш,
KeyboardInput - ввод текста с клавиатуры;
В приоритете исполнители, которые уже делали подобные задачи, т.е. могут переиспользовать свой готовый код или точно знают как решить эту задачу. Пожалуйста, указывайте в откликах, если уже делали подобные проекты.
- Приложение должно быть реализовано на C# (при необходимости использования оконных классов желательно использовать WinForms, а не WPF, т.к. планируется встраивание в уже существующий проект на WinForms).
- После запуска приложение должно постоянно находиться в памяти. Окна приложения не нужны. Нужна иконка в трее с пунктами Автозагрузка (галочка), Логи... (открывает папку программы) и Выход. Приложение не должно выдавать никаких сообщений об ошибках - только писать их в текстовый лог при необходимости. Приложение не должно препятствовать завершению работы Windows. Приложение не должно сопротивляться закрытию своего процесса, а также не должно запускаться второй раз, если одна копия уже запущена. Приложение должно быть достаточно стабильным, чтобы проработать несколько недель без вылетов и перезапусков.
- При запуске приложение должно прописать себя в автозагрузку, если ещё не прописано. По нажатию комбинации клавиш Ctrl + Alt + Shift + S программа должна убрать себя из автозагрузки и завершиться.
- Следить за появлением на экране новых окон, активацией окон, кликами в них (левые, правые, средние, скроллы колёсиком), нажатием клавиш клавиатуры (в том числе комбинации клавиш) и писать все экранные и клавиатурные события в файл лога в табличку в формате CSV. Каждая новая запись должна добавляться таким образом, чтобы при внезапном завершении программы все накопленные до этого момента записи остались в файле лога.
- Дата и время (до миллисекунд)
- Событие
LClick - левый клик;
RClick - правый клик;
MClick - средний клик;
ScrollUp - скролл вверх;
ScrollDown - скрол вниз;
Drag - перетаскивание (mouse down + mouse move + mouse up);
ClipboardCopy - копирование в буфер обмена;
ClipboardPaste, вставка из буфера обмена,
KeyboardShorcut - нажатие комбинации клавиш,
KeyboardInput - ввод текста с клавиатуры;
- Название приложения (процесса);
- Путь к приложению (процессу);
- Заголовок активного окна;
- Имя класса активного окна;
- Текст
- Для событий клавиатуры - завершенный ввод текста, после которого последовало не клавиатурное событие или нажатие системных клавиш кроме пробела. То есть надо записывать не каждую кнопку отдельно, а накапливать текст до другого клика или до нажатия Enter, Escape, стрелок и т.д.
- Для событий буфера обмена - содержимое буфера обмена;
- Для кликов и других событий мыши - текст элемента управления под курсором, который можно добыть с помощью GetWindowText или подобными методами.
- Координаты мыши относительно верхнего-левого угла активного окна ([X, Y] для клика, [X1, Y1, X2, Y2] - для drag);
- Имя компьютера;
- Название рабочей группы / домена компьютера
- Имя пользователя компьютера;
- IP адрес (желательно основного адаптера);
- Текущий URL из адресной строки браузера (для основных браузеров - Chrome, IE, Edge, Firefox, Opera), если активным окном является этот браузер. Это надо сделать без плагинов. Во всех упомянутых выше браузерах структура окна такая, что через GetWindowText и оконные сообщения получить этот текст невозможно. Однако его можно получить например через интерфейс UIAutomation.
- GUID скриншота активного окна.
В моменты активации новых окон, любых кликов по элементам управления, нажатия и отпускания кнопок мыши, начала и окончания печати текста или нажатия комбинации клавиш делать скриншот активного окна и сохранять его в формате png в подпапку Captured папки программы, имя файла должно быть случайным GUID, который записывается в соответствующее поле таблицы.
В приоритете исполнители, которые уже делали подобные задачи, т.е. могут переиспользовать свой готовый код или точно знают как решить эту задачу. Пожалуйста, указывайте в откликах, если уже делали подобные проекты.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.