Загрузка данных


#include <iostream>
#include <windows.h>
#include <string>

int main() {
    // НАСТРОЙКА КОДИРОВКИ
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    std::wcout << L"Системная информация" << std::endl;
    std::wcout << std::endl;

    // Для формирования итогового сообщения в MessageBox
    std::wstring message = L"Системная информация:\n";

    // ========================================================
    // ПОЛУЧЕНИЕ ИМЕНИ КОМПЬЮТЕРА
    // ========================================================
    TCHAR computerName[MAX_COMPUTERNAME_LENGTH + 1];
    DWORD compSize = MAX_COMPUTERNAME_LENGTH + 1;

    if (GetComputerName(computerName, &compSize)) {
        std::wcout << L"Компьютер: " << computerName << std::endl;
        message += L"Компьютер: " + std::wstring(computerName) + L"\n";
    } else {
        DWORD err = GetLastError();
        std::wcout << L"Ошибка получения имени компьютера. Код: " << err << std::endl;
        message += L"Компьютер: Ошибка (" + std::to_wstring(err) + L")\n";
    }

    // ========================================================
    // ПОЛУЧЕНИЕ ИМЕНИ ПОЛЬЗОВАТЕЛЯ (Часть 3)
    // ========================================================
    TCHAR userName[UNLEN + 1];
    DWORD userSize = UNLEN + 1;

    if (GetUserName(userName, &userSize)) {
        std::wcout << L"Пользователь: " << userName << std::endl;
        message += L"Пользователь: " + std::wstring(userName) + L"\n";
    } else {
        DWORD err = GetLastError();
        std::wcout << L"Ошибка получения имени пользователя. Код: " << err << std::endl;
        message += L"Пользователь: Ошибка (" + std::to_wstring(err) + L")\n";
    }

    // ========================================================
    // ПОЛУЧЕНИЕ КОЛИЧЕСТВА ЯДЕР ПРОЦЕССОРА (Часть 3)
    // ========================================================
    SYSTEM_INFO sysInfo;
    GetSystemInfo(&sysInfo);

    std::wcout << L"Количество ядер: " << sysInfo.dwNumberOfProcessors << std::endl;
    message += L"Количество ядер: " + std::to_wstring(sysInfo.dwNumberOfProcessors) + L"\n";

    std::wcout << std::endl;

    // ========================================================
    // ПОЛУЧЕНИЕ ИНФОРМАЦИИ ОБ ОПЕРАТИВНОЙ ПАМЯТИ
    // ========================================================
    MEMORYSTATUSEX memStatus;
    memStatus.dwLength = sizeof(memStatus);

    if (GlobalMemoryStatusEx(&memStatus)) {
        // Перевод из байт в гигабайты (1024 * 1024 * 1024 байт)
        double totalGb = static_cast<double>(memStatus.ullTotalPhys) / (1024 * 1024 * 1024);
        double availGb = static_cast<double>(memStatus.ullAvailPhys) / (1024 * 1024 * 1024);

        std::wcout << L"Всего ОЗУ: " << totalGb << L" ГБ" << std::endl;
        std::wcout << L"Свободно ОЗУ: " << availGb << L" ГБ" << std::endl;
        std::wcout << L"Загрузка: " << memStatus.dwMemoryLoad << L"%" << std::endl;

        message += L"Всего ОЗУ: " + std::to_wstring(totalGb) + L" ГБ\n";
        message += L"Свободно ОЗУ: " + std::to_wstring(availGb) + L" ГБ\n";
        message += L"Загрузка: " + std::to_wstring(memStatus.dwMemoryLoad) + L"%\n";
    } else {
        DWORD err = GetLastError();
        std::wcout << L"Ошибка получения информации о памяти. Код: " << err << std::endl;
        message += L"Память: Ошибка (" + std::to_wstring(err) + L")\n";
    }

    std::wcout << std::endl;

    // ========================================================
    // ВЫВОД ДИАЛОГОВОГО ОКНА
    // ========================================================
    MessageBox(
        NULL,
        message.c_str(),
        L"Лабораторная работа №1",
        MB_OK | MB_ICONINFORMATION
    );

    std::wcout << L"\nГотово! Нажмите Enter для выхода..." << std::endl;
    std::wcin.get();

    return 0;
}