Ниже пример кода показывает, как использовать функцию EnumDisplayDevices, чтобы получить информацию о мониторе.
BOOL GetDisplayMonitorInfo(int nDeviceIndex, LPSTR lpszMonitorInfo) { FARPROC EnumDisplayDevices; HINSTANCE hInstUser32; DISPLAY_DEVICE DispDev; char szSaveDeviceName[32]; BOOL bRet = TRUE; hInstUser32 = LoadLibrary("User32.DLL"); if (!hInstUser32) return FALSE; // Получим адрес функции EnumDisplayDevices EnumDisplayDevices = (FARPROC)GetProcAddress(hInstUser32, "EnumDisplayDevicesA"); if (!EnumDisplayDevices) { FreeLibrary(hInstUser32); return FALSE; } ZeroMemory(&DispDev, sizeof(DISPLAY_DEVICE)); DispDev.cb = sizeof(DISPLAY_DEVICE); // После первого вызова EnumDisplayDevices, // DispDev.DeviceString несет в себе название адаптера if (EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0)) { lstrcpy(szSaveDeviceName, DispDev.DeviceName); // После второго вызова, DispDev.DeviceString несет в себе // название монитора для этого устройства EnumDisplayDevices(szSaveDeviceName, 0, &DispDev, 0); lstrcpy(lpszMonitorInfo, DispDev.DeviceString); } else{ bRet = FALSE;} FreeLibrary(hInstUser32); return bRet; } |