Çözüm C++ ile CPU ve RAM bilgisini alma

Bu konu bir çözümü açıklamaktadır. Herhangi bir çözüm açıklanmadığını düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
28 Ocak 2020
Mesajlar
19.850
Makaleler
55
Çözümler
461
Merhabalar, işinize yarayacak bir kod paylaşmak istiyorum.

Bu kod ile işlemci adını ve RAM miktarını öğrenebilirsiniz.

C++:
#include <iostream>
#include <intrin.h>
#include <array>
#include <locale.h>
#include <windows.h>

void main(){
        setlocale(LC_ALL, "Turkish");
        std::array<int, 4> integerBuffer = {};
        constexpr size_t sizeofIntegerBuffer = sizeof(int) * integerBuffer.size();
        std::array<char, 64> charBuffer = {};
        constexpr std::array<int, 3> functionIds = {
            // ÜRETİCİ
            0x8000'0002,
            // CPU MODELİ
            0x8000'0003,
            // CPU HIZI
            0x8000'0004
        };
        std::string cpu;
        for (int id : functionIds){
            __cpuid(integerBuffer.data(), id);
            std::memcpy(charBuffer.data(), integerBuffer.data(), sizeofIntegerBuffer);
            cpu += std::string(charBuffer.data());
        }
        MEMORYSTATUSEX statex;
        statex.dwLength = sizeof(statex);
        GlobalMemoryStatusEx(&statex);
        std::cout << "İşlemci: " + cpu + "\n";
        std::cout << "RAM Miktarı: " << (float)statex.ullTotalPhys / (1024 * 1024 * 1024) << " MB\n";
}

Çıktısı
1622973010611.png
 
Son düzenleme:
Elinize sağlık hocam çok yararlı olmuş, geçen gün Stackoverflowda konu açmıştım fakat cevap alamamıştım şuan çok işime yarayacak :)
 
Kodu bu şekilde güncellerseniz RAM miktarını alabilirsiniz.

C++:
#include <iostream>
#include <intrin.h>
#include <array>
#include <locale.h>
#include <windows.h>

void main(){
        setlocale(LC_ALL, "Turkish");
        std::array<int, 4> integerBuffer = {};
        constexpr size_t sizeofIntegerBuffer = sizeof(int) * integerBuffer.size();
        std::array<char, 64> charBuffer = {};
        constexpr std::array<int, 3> functionIds = {
            // ÜRETİCİ
            0x8000'0002,
            // CPU MODELİ
            0x8000'0003,
            // CPU HIZI
            0x8000'0004
        };
        std::string cpu;
        for (int id : functionIds){
            __cpuid(integerBuffer.data(), id);
            std::memcpy(charBuffer.data(), integerBuffer.data(), sizeofIntegerBuffer);
            cpu += std::string(charBuffer.data());
        }
        MEMORYSTATUSEX statex;
        statex.dwLength = sizeof(statex);
        GlobalMemoryStatusEx(&statex);
        std::cout << "İşlemci: " + cpu + "\n";
        std::cout << "RAM Miktarı: " << (float)statex.ullTotalPhys / (1024 * 1024 * 1024) << " MB\n";
}

Çıktısı;
1622973010611.png


@414605
 

Geri
Yukarı