Найти в Дзене
Т.Е.Х.Н.О Windows & Linux

Профессиональный монитор ресурсов в трей Windows 11 | Коды и инструкции

Cоздаём лёгкую утилиту на C++ или Rust, которая в реальном времени отображает загрузку CPU, RAM и диска прямо в трее Windows 11 Почему собственная утилита? Полный контроль над функционалом 🛠️ Возможность кастомизации интерфейса ✨ Отсутствие сторонних зависимостей 🔒 Обзор зарубежных сообществ для поддержки проекта При разработке полезно подключиться к активным международным сообществам: Stack Overflow – основной ресурс для вопросов по C++ и Rust во вкладке «Windows API» и «System Programming» 🔍. r/cpp и r/rust на Reddit – обмен новостями, примерами кода, помощь в отладке 🤖. Rust Users Forum и Rust Discord – каналы для обсуждения Rust, новичкам помогут #rust-beginners и Zulip-серверы 🌐. OSR Developer Community – спецфорум по Windows Driver Kit и kernel-mode debug для продвинутых задач по мониторингу Windows 📂. Windows Developer Community (Microsoft) – официальные чаты, MVP-программа, локальные митапы и онлайн-ивенты 💬. DEV Community – статьи, туториалы, опыт каналов T.E.X.H.H.O н
Оглавление

Cоздаём лёгкую утилиту на C++ или Rust, которая в реальном времени отображает загрузку CPU, RAM и диска прямо в трее Windows 11

Почему собственная утилита?

  • Полный контроль над функционалом 🛠️
  • Возможность кастомизации интерфейса ✨
  • Отсутствие сторонних зависимостей 🔒

Обзор зарубежных сообществ для поддержки проекта

При разработке полезно подключиться к активным международным сообществам:

  • Stack Overflow – основной ресурс для вопросов по C++ и Rust во вкладке «Windows API» и «System Programming» 🔍.
  • r/cpp и r/rust на Reddit – обмен новостями, примерами кода, помощь в отладке 🤖.
  • Rust Users Forum и Rust Discord – каналы для обсуждения Rust, новичкам помогут #rust-beginners и Zulip-серверы 🌐.
  • OSR Developer Community – спецфорум по Windows Driver Kit и kernel-mode debug для продвинутых задач по мониторингу Windows 📂.
  • Windows Developer Community (Microsoft) – официальные чаты, MVP-программа, локальные митапы и онлайн-ивенты 💬.
  • DEV Community – статьи, туториалы, опыт каналов T.E.X.H.H.O на англоязычном DEV.to 📝.

Шаг 1. Подготовка среды разработки

  1. Установите Visual Studio 2022 с рабочими нагрузками «Desktop development with C++» и «Windows 11 SDK» (для C++).
  2. Установите Rust через rustup:bashcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  3. (Опционально) Настройте Clippy и Rustfmt для форматирования и статического анализа:bashrustup component add clippy rustfmt

🔖Дорогие гости и подписчики канала. Если наши материалы приносят вам пользу, вы всегда можете поддержать команду символическим переводом. Любая помощь мотивирует писать для Вас больше полезного и качественного контента безо всяких подписок.🙏🤝🙏🤝🙏
-2
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 50 РУБЛЕЙ )💰
Или сделать любой перевод по QR-коду через СБП. Быстро, безопасно и без комиссии.(Александр Г.)
С уважением, Команда "Т.Е.Х.Н.О Windows & Linux".

Шаг 2. Архитектура утилиты

  • Сбор данных: Windows Performance Counters для C++; sysinfo или heim crate для Rust.
  • Отрисовка: Win32 API или Qt/C++ для GUI; tray-item crate и tao + winit для Rust.
  • Цикл обновления: таймер с частотой 1 секунда.
  • Трэй-иконка: динамическая иконка или текстовое меню.

Шаг 3. Реализация на C++

#include <windows.h>

#include <pdh.h>

#pragma comment(lib, "pdh.lib")

// Функция инициализации счётчиков

PDH_HQUERY cpuQuery;

PDH_HCOUNTER cpuTotal;

void initPdh() {

PdhOpenQuery(NULL, NULL, &cpuQuery);

PdhAddCounter(cpuQuery, "\\Processor(_Total)\\% Processor Time", NULL, &cpuTotal);

PdhCollectQueryData(cpuQuery);

}

float getCpuUsage() {

PDH_FMT_COUNTERVALUE counterVal;

PdhCollectQueryData(cpuQuery);

PdhGetFormattedCounterValue(cpuTotal, PDH_FMT_DOUBLE, NULL, &counterVal);

return (float)counterVal.doubleValue;

}

// Дальше: создание трея и обновление с помощью SetTimer + Shell_NotifyIconA

Лайфхак: используйте GDI+ для отрисовки в иконке текста с процентами CPU и RAM – так не придётся генерировать новые ICO-файлы каждый раз 🎨.

Шаг 4. Реализация на Rust

use sysinfo::{System, SystemExt, ProcessorExt};

use tray_item::TrayItem;

use std::{thread, time::Duration};

fn main() -> tray_item::Result<()> {

let mut sys = System::new_all();

let mut tray = TrayItem::new("ResMon", "icon-name")?;

tray.add_label("Loading...")?;

loop {

sys.refresh_all();

let cpu = sys.global_processor_info().cpu_usage();

let ram = sys.used_memory() as f32 / sys.total_memory() as f32 * 100.0;

let disk = sys.disks().iter()

.map(|d| d.available_space() as f32 / d.total_space() as f32 * 100.0)

.max_by(|a, b| a.partial_cmp(b).unwrap()).unwrap_or(0.0);

let text = format!("CPU:{:.0}% RAM:{:.0}% DSK:{:.0}%", cpu, ram, disk);

tray.set_tooltip(&text)?;

thread::sleep(Duration::from_secs(1));

}

}

Лайфхак: воспользуйтесь max_by для дисков, чтобы показывать самый нагруженный, или объедините данные для всех дисков.

Шаг 5. Сборка и упаковка

  1. C++: соберите проект Release-конфигурацией, упакуйте exe и необходимые DLL в инсталлятор (NSIS/Inno Setup).
  2. Rust: используйте cargo build --release, опционально статически линковать через musl таргет.

👍

Шаг 6. Тестирование и распространение

  • Проверьте на Windows 11 Home и Pro.
  • Оцените нагрузку на систему самой утилитой (<1% CPU).
  • Опубликуйте на GitHub Releases с инструкцией по установке.

Заключение

Создание трэй-монитора ресурсов на C++ или Rust – отличный способ прокачать навыки работы с WinAPI и системной информацией. Поддержка сообществ и лайфхаки помогут сделать утилиту надёжной и удобной.

Удачи в кодинге и мониторинге! 🚀

Не забываем подписываться и ставить лайки. Донаты приветствуются.

-3

#C++ #Rust #Windows11 #TrayApp #SystemMonitor #CPU #RAM #Disk #WinAPI #sysinfo #PerformanceCounters #trayitem #tao #winit #GDI+ #RustSysinfo #PDH #VS2022 #rustup #Clippy #Rustfmt #GitHub #Release #NSIS #InnoSetup #Profiling #DeveloperCommunity #StackOverflow #Reddit #OSRDeveloperCommunity #WindowsDevCommunity #DEVCommunity