Skip to content

Task Manager Rebuild v1.0.0

Latest

Choose a tag to compare

@Desai0 Desai0 released this 30 Apr 04:05
· 2 commits to master since this release

Программа вышла в релиз!

Добавлены графики загрузки системы, рефакторинг расчета CPU и улучшения UI

Цель:

Это обновление добавляет визуализацию использования системных ресурсов (CPU и RAM) в реальном времени и исправляет неточности в ранее реализованном расчете CPU и RAM для отдельных процессов. Цель — предоставить пользователям как детальный список процессов, так и обобщенное представление о производительности системы.

Ключевые изменения:

  • Бэкенд (Taskm.cpp, Taskm.h):

    • Рефакторинг расчета CPU для процессов: Полностью переработана логика расчета использования CPU. Теперь корректно используются GetProcessTimes, отслеживаются разницы во времени между обновлениями (systemTimeDelta, processTimeDelta), и результат нормализуется относительно количества процессоров системы для предоставления точных процентов загрузки CPU, сравнимых со стандартным Диспетчером задач Windows. Удален ненадежный подход, основанный на Sleep().
    • Управление состоянием: Реализован std::map (processMap) для сохранения информации о времени процессов между вызовами update(), что критически важно для корректного расчета дельт.
    • Обработка ошибок PDH: Устранены проблемы с локализацией счетчиков PDH (ошибка c0000bb8) путем перехода с PdhAddCounterW на PdhAddEnglishCounterA для общей загрузки CPU. Добавлены проверки успешности выполнения функций PDH.
    • Линковка библиотек: Обеспечена линковка с pdh.lib для устранения ошибок LNK2001.
  • Фронтенд - Вкладка "Загрузка системы" (renderer.js, charts.js, index.html):

    • Добавлены графики загрузки системы: Добавлены два линейных графика реального времени с использованием Chart.js для отображения истории загрузки CPU и RAM (в процентах) на вкладке "Загрузка системы".
    • Модуль графиков (charts.js): Вся логика Chart.js (инициализация, обновление данных, стилизация, состояние) вынесена в отдельный, инкапсулированный модуль charts.js для улучшения структуры кода и разделения ответственности с renderer.js.
    • Стилизация и анимация графиков:
      • Применены пользовательские стили к графикам: заливка фона, цвета/толщина линий, стили точек, заголовки осей, линии сетки и всплывающие подсказки.
      • Включена и настроена плавная анимация (duration, easing) для обновления графиков.
    • Функционал вкл/выкл графиков:
      • Добавлена кнопка "Вкл/Выкл графики" для управления рендерингом и фоновым обновлением графиков.
      • При отключении обновление графиков останавливается, экономя ресурсы клиентской стороны. Контейнер с графиками скрывается через CSS.
  • Фронтенд - Общее (renderer.js, main.js, preload.js):

    • Запрос данных в зависимости от вкладки: Реализована логика для переключения запросов данных (getProcesses против getSystemLoad) на основе активной вкладки, управляемая через IPC-сообщения между Renderer и Main. Данные для неактивной вкладки больше не запрашиваются периодически.
    • Состояние кнопки уменьшения RAM: Исправлено управление состоянием для визуальной кнопки "Уменьшить RAM (-20%)", гарантируя, что ее эффект сохраняется между автоматическими обновлениями данных и сбрасывается только при явном действии пользователя (например, нажатии основной кнопки "Обновить").
    • Статус соединения: Исправлена логика отображения статуса соединения с бэкендом, чтобы он точно отражал состояние TCP-соединения (connected/disconnected), а не был привязан только к получению данных.
    • IPC-коммуникация: Добавлены необходимые IPC-каналы (set-active-data-mode) и обработчики в main.js и preload.js для управления переключением режима данных.

Технические детали:

  • Использована библиотека Chart.js (рекомендуется v4.x) для построения графиков.
  • Использован Windows PDH API (PdhAddEnglishCounterA, PdhCollectQueryData и т.д.) для надежного получения общей загрузки CPU системы.
  • Использованы GetProcessTimes и расчеты временных дельт для CPU отдельных процессов.
  • Применен паттерн модуля IIFE в charts.js для инкапсуляции.