使用MS的SYSINFO控件最方便了。

解决方案 »

  1.   

    看看我的:
    CString str;
    char* szTemp = new char[20]; //OEM
    char OEMString[13];
    int iEAXValue,iEBXValue,iECXValue,iEDXValue;
    _asm{
    mov eax,0
    cpuid
    mov DWORD PTR OEMString, ebx
    mov DWORD PTR OEMString+4, edx
    mov DWORD PTR OEMString+8, ecx
    mov BYTE PTR OEMString+12, 0
    }
    str.Format("CPU厂商: %s\n",  OEMString); _asm{
    mov eax, 1
    cpuid
    mov iEAXValue, eax
    mov iEBXValue, ebx
    mov iECXValue, ecx
    mov iEDXValue, edx
    }
    //type, eax 8-11b
    switch( iEAXValue & 0x00000f00 )
    {
    case 0x00000200:
    str += "CPU类型: 双CPU\n";
    break;
    case 0x00000500:
    str += "CPU类型: Pentium\n";
    break;
    case 0x00000600:
    str += "CPU类型: Pentium Pro or Pentium II\n";
    break;
    default:
    str += "CPU类型: 未能识别\n";
    }
    //FPU, edx 0b
    if( iEDXValue & 0x00000001 )
    str += "FPU: 存在\n";
    else
    str += "FPU: 不存在\n";
    //IA MMX, edx 23b
    if( iEDXValue & 0x800000 )
    str += "MMX: 支持\n";
    else
    str += "MMX: 不支持\n"; delete szTemp;
    CPU的~~其它的我也不太清楚~~~~
      

  2.   

    CString str;
    MEMORYSTATUS MemoryStatus = { 0 };
    ::GlobalMemoryStatus(&MemoryStatus);

    str.Format("\n物理内存容量: %d KB\n可用内存: %d KB\n内存使用率: %lu\n", 
    MemoryStatus.dwTotalPhys/1000,
    MemoryStatus.dwAvailPhys/1000,
    MemoryStatus.dwMemoryLoad);Memory的