如生产厂家,型号,显存大小,等

解决方案 »

  1.   

    主        题:  怎样得到显卡和显示器的具体信息,包括牌子型号? 
    作        者:  heresy415 (空心菜)
    描述:
    用API获取或读取注册表,能不能把源码附上,多谢了
    回复人: Gladstone(大士)
    // This sample is a program which show the information ,such as description,
    // provider and version of each  pci device:
    //retrieve a set of all devices on the Peripheral Component Interconnect (PCI) 
    //bus. 
        HDEVINFO hPciDevInfo = SetupDiGetClassDevs(NULL,REGSTR_KEY_PCIENUM,0,
    DIGCF_PRESENT | DIGCF_ALLCLASSES );
       if (hPciDevInfo == INVALID_HANDLE_VALUE)   return ;
    // Show all related device in the PCI set
        DisplayDriverDsp(hPciDevInfo);
    void CTestDlg::DisplayDriverDsp(HDEVINFO hDevInfo)
    {
        SP_DEVINFO_DATA DeviceInfoData;
    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
    TCHAR buffer[MAX_PATH];
    ZeroMemory(buffer, MAX_PATH);
    HKEY hCurKey;
    CString strConstKey;
    HKEY hRootKey = HKEY_LOCAL_MACHINE;
    if (bIsNt)
    strConstKey = "SYSTEM\\CurrentControlSet\\Control\\Class\\";
    else
    strConstKey = "SYSTEM\\CurrentControlSet\\Services\\Class\\";
    /*DWORD dwI, dwValueType;
    TCHAR szValueName[MAX_PATH];
    TCHAR szValueData[MAX_PATH];
    ZeroMemory(szValueName, MAX_PATH);
    ZeroMemory(szValueData, MAX_PATH);
    DWORD dwVNameSize, dwVDataSize;
    dwVNameSize = MAX_PATH;
    dwVDataSize = MAX_PATH;*/
        for (DWORD i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
        {
            SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, 
    SPDRP_DRIVER, NULL, (PBYTE)buffer, MAX_PATH, NULL);
    CString strKey = strConstKey;
    strKey += buffer;
    if (ERROR_SUCCESS != ::RegOpenKey(hRootKey, (LPCSTR)strKey, &hCurKey))
    {
    TRACE("%d", GetLastError());
    return;
    }
             // Get the driver description
    DWORD dwType = REG_SZ;
    if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "DriverDesc", NULL, 
    &dwType, (LPBYTE)szValueData, &dwVDataSize))
    return;
             // Get provider name
    if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "ProviderName", NULL, &dwType, (LPBYTE)szValueData, &dwVDataSize))
    return;
             // Retrieve version:
    if (ERROR_SUCCESS != ::RegQueryValueEx(hCurKey, "Ver", NULL, &dwType, (LPBYTE)szValueData, &dwVDataSize))
    return;
    }