Ich versuche, ein kleines Programm einzurichten, um die Monitorhelligkeit an die aktuelle Raumhelligkeit anzupassen.GetMonitorBrightness() stürzt mit Zugriffsverletzung ab
ich die Anweisungen von MSDN gefolgt und diese einrichten:
cout << "Legen Sie das Fenster bitte auf den zu steuernden Monitor.\n";
system("PAUSE");
HMONITOR hMon = NULL;
char OldConsoleTitle[1024];
char NewConsoleTitle[1024];
GetConsoleTitle(OldConsoleTitle, 1024);
SetConsoleTitle("CMDWindow7355608");
Sleep(40);
HWND hWnd = FindWindow(NULL, "CMDWindow7355608");
SetConsoleTitle(OldConsoleTitle);
hMon = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);
DWORD cPhysicalMonitors;
LPPHYSICAL_MONITOR pPhysicalMonitors = NULL;
BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(
hMon,
&cPhysicalMonitors
);
if(bSuccess)
{
pPhysicalMonitors = (LPPHYSICAL_MONITOR)malloc(
cPhysicalMonitors* sizeof(PHYSICAL_MONITOR));
if(pPhysicalMonitors!=NULL)
{
LPDWORD min = NULL, max = NULL, current = NULL;
GetPhysicalMonitorsFromHMONITOR(hMon, cPhysicalMonitors, pPhysicalMonitors);
HANDLE pmh = pPhysicalMonitors[0].hPhysicalMonitor;
if(!GetMonitorBrightness(pmh, min, current, max))
{
cout << "Fehler: " << GetLastError() << endl;
system("PAUSE");
return 0;
}
//cout << "Minimum: " << min << endl << "Aktuell: " << current << endl << "Maximum: " << max << endl;
system("PAUSE");
}
}
Aber das Problem: jedes Mal wenn ich versuche GetMonitorBrightness() stürzt das Programm mit Access Violation while writing at Position 0x00000000
(I aus dem Deutschen übersetzt diesen Fehler) zu verwenden
Beim Debugging habe ich gesehen, dass pPhysicalMonitors tatsächlich den Monitor enthält, den ich verwenden möchte, aber pPhysicalMonitors[0].hPhysicalMonitor
enthält nur 0x0000000. Könnte das ein Teil des Problems sein?
Vielen Dank, das DWORD und Adressen behoben. – DoktorMerlin