Releases: Desai0/Task-Manager-Rebuild
Releases · Desai0/Task-Manager-Rebuild
Task Manager Rebuild v1.0.0
Программа вышла в релиз!
Добавлены графики загрузки системы, рефакторинг расчета 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.
- Рефакторинг расчета CPU для процессов: Полностью переработана логика расчета использования CPU. Теперь корректно используются
-
Фронтенд - Вкладка "Загрузка системы" (
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для инкапсуляции.
Брендбук Проекта
Брендбук Проекта: Custom Task Manager
Версия: 1.0
Дата: 30.04.2025
Task Manager Rebuild v0.5-beta
Обновления:
- Все процессы теперь сгруппированы в раскрывающийся список, если они имеют отношение к одному приложению;
- Основные приложения теперь закреплены вверху экрана, выделены жирным шрифтом и более темной подложкой с возможность закрытия всего списка процессов;
- Системные процессы опузены вниз, чтобы не засорять список и выделены, их все так же можно завершать;
- Налажена работа на системах без скачанных dev пакетов VS
- Большая работа над бэкендом
Task Manager Rebuild v0.1
Основные возможности и функциональность:
Просмотр процессов:
- Отображение списка текущих запущенных процессов в табличном виде.
- Для каждого процесса выводятся: PID (Идентификатор процесса), Имя исполняемого файла, примерная Загрузка CPU (%)(WIP), используемая Память (Working Set Size, в МБ).
Управление процессами:
- Возможность принудительно завершить выбранный процесс по его PID.
Обновление данных:
- Кнопка "Обновить" для получения актуального списка процессов от бэкенда.
Взаимодействие:
- Связь между фронтендом (Electron) и бэкендом (C++) осуществляется через TCP/IP сокеты (localhost:12345).
- Обмен данными и командами происходит с использованием JSON-сообщений.
- Реализован механизм Ping/Pong для поддержания TCP-соединения активным и предотвращения разрыва из-за бездействия.
Standalone Приложение:
- Приложение собрано с использованием Electron Builder.
- Фронтенд (Electron) автоматически запускает исполняемый файл бэкенда (TaskManager.exe) при своем старте.
- Бэкенд-процесс автоматически завершается при закрытии основного окна Electron-приложения.
- Исполняемый файл бэкенда включен в установочный пакет как дополнительный ресурс.
Интерфейс:
- Базовый интерфейс с двумя вкладками (WIP).
- Индикатор статуса соединения с бэкендом.