Ich habe versucht, die Helligkeit des primären Monitors zu erhalten mit dem folgenden Code:Winapi C++ versuchen primäre Helligkeit des Monitors zu bekommen
POINT monitorPoint = { 0, 0 };
HANDLE monitor = MonitorFromPoint(monitorPoint, MONITOR_DEFAULTTOPRIMARY);
DWORD minb, maxb, currb;
if (GetMonitorBrightness(monitor, &minb, &currb, &maxb) == FALSE) {
std::cout << GetLastError() << std::endl;
}
Aber es scheitert und GetLastError()
kehrt 87
die Invalid Parameter
bedeutet.
EDIT: habe ich es geschafft, diese zu lösen EnumDisplayMonitors()
und GetPhysicalMonitorsFromHMONITOR()
wie folgt aus:
std::vector<HANDLE> pMonitors;
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
DWORD npm;
GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, &npm);
PHYSICAL_MONITOR *pPhysicalMonitorArray = new PHYSICAL_MONITOR[npm];
GetPhysicalMonitorsFromHMONITOR(hMonitor, npm, pPhysicalMonitorArray);
for (unsigned int j = 0; j < npm; ++j) {
pMonitors.push_back(pPhysicalMonitorArray[j].hPhysicalMonitor);
}
delete pPhysicalMonitorArray;
return TRUE;
}
// and later inside main simply:
EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, NULL);
// and when I need to change the brightness:
for (unsigned int i = 0; i < pMonitors.size(); ++i) {
SetMonitorBrightness(pMonitors.at(i), newValue);
}
Jetzt treffe ich 2 neue Probleme:
1) Von EnumDisplayMonitors()
I 2 Monitor erhalten Griffe, da ich 2 Monitore. Das Problem ist, dass nur mein Hauptwerk funktioniert. Jedes Mal, wenn ich so etwas mit dem sekundären Monitor versuchen, bekomme ich diesen Fehler:
0xC0262582: ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA
2) Nach der Verwendung von SetMonitorBrightness()
seit einiger Zeit auch für den primären Monitor es nicht mehr funktioniert und ich erhalte die folgenden Fehler:
0xC026258D
Haben Sie bestätigen, dass 'monitor' ist nicht' NULL' oder 'INVALID_HANDLE_VALUE'? – selbie
Haben Sie GetMonitorCapabilities aufgerufen, um zu bestätigen, dass das Flag MC_CAPS_BRIGHTNESS verfügbar ist? – selbie
'MonitorFromPoint()' gibt einen 'HMONITOR' zurück, kein' HANDLE'. Ihr Code konnte nicht kompiliert werden, wenn Sie mit 'STRICT' kompiliert wurden. –