Getting Hardware Information

The following example uses the GetSystemInfo function to obtain hardware information such as the OEM identifier, processor type, page size, and so on. The example displays the information in a window's client area.

SYSTEM_INFO siSysInfo;   // struct. for hardware information 
int aTabs[1] = {260};    // tab stop for TabbedTextOut 
 
TCHAR tchBuffer[BUFFER]; // buffer for expanded string 
int nSize;               // size of string 
 
// Display the "hardware information" header. 
 
nSize = sprintf(tchBuffer, 
    "Hardware information:"); 
TextOut(hdc, 15, 20, tchBuffer, nSize); 
 
// Copy the hardware information to the SYSTEM_INFO structure. 
 
GetSystemInfo(&siSysInfo); 
 
// Display the contents of the SYSTEM_INFO structure. 
 
nSize = sprintf(tchBuffer, 
    "OEM ID: %u\tNumber of Processors: %u", 
    siSysInfo.dwOemId, 
    siSysInfo.dwNumberOfProcessors); 
TabbedTextOut(hdc, 25, 40, tchBuffer, 
    nSize, 1, aTabs, 25); 
 
nSize = sprintf(tchBuffer, 
    "Page size: %u\tProcessor Type: %u", 
    siSysInfo.dwPageSize, 
    siSysInfo.dwProcessorType); 
TabbedTextOut(hdc, 25, 60, tchBuffer, 
    nSize, 1, aTabs, 25); 
 
nSize = sprintf(tchBuffer, 
    "Minimum app address: %lx\tMaximum app address: %lx", 
    siSysInfo.lpMinimumApplicationAddress, 
    siSysInfo.lpMaximumApplicationAddress); 
TabbedTextOut(hdc, 25, 80, tchBuffer, 
    nSize, 1, aTabs, 25); 
 
nSize = sprintf(tchBuffer, 
    "Active processor mask: %u", 
    siSysInfo.dwActiveProcessorMask); 
TextOut(hdc, 25, 100, tchBuffer, nSize); 
 

The following example uses the GetSystemMetrics function to determine whether a mouse is installed and whether the mouse buttons are swapped. The example also uses the SystemParametersInfo function to retrieve the mouse threshold and speed. It displays the information in a message box.

TCHAR tchBuffer[BUFFER]; // buffer for expanded string 
int nSize;               // size of string 
 
BOOL fResult;            // system shutdown flag 
 
int aMouseInfo[3];       // array for mouse information
 
// Is there a mouse? 
 
fResult = GetSystemMetrics(SM_MOUSEPRESENT); 
 
if (fResult == 0) 
{ 
    // Indicate if there is no mouse. 
 
    nSize = sprintf(tchBuffer, "No mouse installed."); 
} 
else 
{ 
    // If there is a mouse, determine whether its buttons are swapped. 
 
    fResult = GetSystemMetrics(SM_SWAPBUTTON); 
 
    if (fResult == 0) 
    { 
        nSize = sprintf(tchBuffer, "Buttons not swapped.\r"); 
    } 
    else 
    { 
        nSize = sprintf(tchBuffer, "Buttons swapped.\r"); 
    } 
 
    // Get the mouse speed and the threshold values. 
 
    SystemParametersInfo(SPI_GETMOUSE, // get mouse information 
        NULL,                          // not used 
        &aMouseInfo,                   // holds mouse information 
        NULL);                         // not used 
 
    nSize += sprintf(tchBuffer + nSize, 
        "Speed: %d\r", aMouseInfo[2]); 
    sprintf(tchBuffer + nSize, 
        "Threshold (x,y): %d,%d", 
        aMouseInfo[0], aMouseInfo[1]); 
} 
 
// Display the mouse information. 
 
MessageBox(NULL, tchBuffer, "Mouse information", 
    MB_ICONINFORMATION); 
 

This next example uses SystemParametersInfo to double the mouse speed and update the MouseSpeed value in the WIN.INI file.

TCHAR tchBuffer[BUFFER]; // buffer for expanded string 
int nSize;               // size of string 
 
int aMouseInfo[3];       // array for mouse information
 
// Get the current mouse speed. 
 
SystemParametersInfo(SPI_GETMOUSE, // get mouse information 
    NULL,                          // not used 
    &aMouseInfo,                   // holds mouse information
    NULL);                         // not used 
 
// Double it. 
 
aMouseInfo[2] = 2 * aMouseInfo[2]; 
 
// Change the mouse speed to the new value and update WIN.INI. 
 
SystemParametersInfo(SPI_SETMOUSE, // set mouse information
    NULL,                          // not used 
    aMouseInfo,                    // mouse information 
    SPIF_UPDATEINIFILE);           // update win.ini