-
Автор темы
- #1
Такое может понадобиться в разных целях, кому-то для логирования крашей в читах, а кому-то для другого.
Но если код для получения информации о CPU можно найти, то вот для получения GPU надо было лезть в дебри msdn
Для получения CPU
Вызывать так:
string str = "";
GetCpu(str); //Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
Для GPU:
Использовать так:
string str = string(dd.DeviceString) //NVIDIA GeForce GTX 1060 6GB
Но если код для получения информации о CPU можно найти, то вот для получения GPU надо было лезть в дебри msdn
Для получения CPU
Код:
void __cpuid(int CPUInfo[4], int InfoType)
{
try
{
__asm
{
mov esi, CPUInfo
mov eax, InfoType
xor ecx, ecx
cpuid
mov dword ptr[esi + 0], eax
mov dword ptr[esi + 4], ebx
mov dword ptr[esi + 8], ecx
mov dword ptr[esi + 12], edx
}
}
catch (...) { return; }
}
void GetCpu(string& output)
{
try
{
int CPUInfo[4] = { -1 };
__cpuid(CPUInfo, 0x80000000);
unsigned int nExIds = CPUInfo[0];
char CPUBrandString[0x40] = { 0 };
for (unsigned int i = 0x80000000; i <= nExIds; ++i)
{
__cpuid(CPUInfo, i);
if (i == 0x80000002)
{
memcpy(CPUBrandString,
CPUInfo,
sizeof(CPUInfo));
}
else if (i == 0x80000003)
{
memcpy(CPUBrandString + 16,
CPUInfo,
sizeof(CPUInfo));
}
else if (i == 0x80000004)
{
memcpy(CPUBrandString + 32, CPUInfo, sizeof(CPUInfo));
}
}
output = CPUBrandString;
}
catch (...) { return; }
}
string str = "";
GetCpu(str); //Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
Для GPU:
Код:
DISPLAY_DEVICEA dd;
dd.cb = sizeof(DISPLAY_DEVICEA);
EnumDisplayDevicesA(NULL, 0, &dd, EDD_GET_DEVICE_INTERFACE_NAME);
string str = string(dd.DeviceString) //NVIDIA GeForce GTX 1060 6GB