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