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. Подготовка среды разработки
- Установите Visual Studio 2022 с рабочими нагрузками «Desktop development with C++» и «Windows 11 SDK» (для C++).
- Установите Rust через rustup:bashcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- (Опционально) Настройте Clippy и Rustfmt для форматирования и статического анализа:bashrustup component add clippy rustfmt
🔖Дорогие гости и подписчики канала. Если наши материалы приносят вам пользу, вы всегда можете поддержать команду символическим переводом. Любая помощь мотивирует писать для Вас больше полезного и качественного контента безо всяких подписок.🙏🤝🙏🤝🙏
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 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. Сборка и упаковка
- C++: соберите проект Release-конфигурацией, упакуйте exe и необходимые DLL в инсталлятор (NSIS/Inno Setup).
- Rust: используйте cargo build --release, опционально статически линковать через musl таргет.
👍
Шаг 6. Тестирование и распространение
- Проверьте на Windows 11 Home и Pro.
- Оцените нагрузку на систему самой утилитой (<1% CPU).
- Опубликуйте на GitHub Releases с инструкцией по установке.
Заключение
Создание трэй-монитора ресурсов на C++ или Rust – отличный способ прокачать навыки работы с WinAPI и системной информацией. Поддержка сообществ и лайфхаки помогут сделать утилиту надёжной и удобной.
Удачи в кодинге и мониторинге! 🚀
Не забываем подписываться и ставить лайки. Донаты приветствуются.
#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