Программа-сервис учета рабочего времени

«Приложение» состоит из клиента (приложение для Windows) и WEB части.

Реализация Web части:
Язык: PHP 7.*
Фреймворк: Laravel 5.7
База данных: MySQL

Реализация клиента:
Язык: c#
Фреймворк: .NET 2.0
База данных: SqLite

В настоящее время доступ к серверу выдать не могу, так как он содержит данные пользователей за полтора года. В дальнейшем заведу тестовый бесплатный сервер, чтобы можно было попробовать на приложение практике.

Дашбоард системы учета рабочего времени сотрудников

Клиент собран с использованием .NET 2.0 ради возможности запуска и на старых компьютерах. Принцип работы прост: программа при запуске прописывает себя в автозагрузке, запускается на фоне, скрывает себя из списка задач и начинает свою фоновую деятельность по сбору активности пользователя. События активности записываются в локальную базу данных на SQLite, при накоплении определенного количества событий (задается в конфиг файле клиента) и при доступности сервера, клиент передает все накопленные события на сервер. При недоступности сервера, все сохраняется локально и при первой возможности передается на сервер.

Взаимодействие клиента с сервером происходит в JSON:

{
   "version" : "0.2",
   "id" : "\u041F\u041A\u041F\u041A",
   "cid" : "-",
   "gid" : null,
   "PC" : "\u041F\u041A\u041F\u041A-\u041F\u041A",
   "userName" : "\u041F\u041A\u041F\u041A",
   "Method" : "events",
   "Events" : [
      {
         "Start" : "2019-02-11T15:51:43",
         "End" : "2019-02-11T15:51:48",
         "idleTime" : 0,
         "title" : "",
         "fileName" : "C:&%slWindows&%slExplorer.EXE",
         "lStart" : 1549900304,
         "lEnd" : 1549900309,
         "processName" : "explorer",
         "keyPress" : 0,
         "mouseClicks" : 0
      },
}

Таким образом клиент шлет на сервер информацию о:

  • дате начала и окончания события
  • времени простоя (задается в конфиге, какой промежуток бездействия считать простоем)
  • заголовок активного окна
  • путь к исполняемому файлу текущего процесса
  • имя процесса
  • количество нажатий на клавиши клавиатуры и щелчков мыши
  • .

исходник на c#

Перечень основных используемых функций WinAPI:

IntPtr SetWindowsHookEx(int idHook, LowLevelProc lpfn, IntPtr hMod, uint dwThreadId);
bool UnhookWindowsHookEx(IntPtr hhk);
IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
IntPtr GetModuleHandle(string lpModuleName);
IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags);
IntPtr GetForegroundWindow();
int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
int GetWindowTextLength(IntPtr hWnd);
bool GetLastInputInfo(ref LASTINPUTINFO plii);
uint GetLastError();
bool IsWindowVisible(IntPtr hWnd);
UInt32 GetWindowThreadProcessId(IntPtr hwnd, ref Int32 pid);

В WEb части реализована:

  • Авторизация;
  • Добавление, удаление, редактирование пользователей;
  • Настройка процессов, заголовков окон — разбитие их по группам;
  • Статистика использования программ;
  • Статистика использования рабочего времени;
  • Отчеты по сотрудникам и другое
Внимание! Открыт для взаимовыгодного сотрудничества! По вопросам доработки, разработки аналогичной или иной системы прошу направлять предложения на gerztrue@gmail.com

Несколько скриншотов Web части:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *