Mein Problem ist die Aktivierung eines deaktivierten Monitors mit ChangeDisplaySettingsEx
. Ich schätze, es ist kein Hexenwerk, aber nach einigem Graben sieht es immer noch unmöglich aus. Ich habe eine Möglichkeit gefunden, alle sekundären Anzeigen zu deaktivieren, die auf dem Microsoft-Codebeispiel here basieren. Obwohl es nur grundlegende Optimierungen zum Arbeiten brauchte, funktionierte das erneute Anfügen nie. Was ich versuchte zu tun war:Anfügen des deaktivierten Anzeigegeräts mit WinAPI
1. Initialisieren DisplayDevice
BOOL FoundSecondaryDisp = FALSE;
DWORD DispNum = 0;
DISPLAY_DEVICE DisplayDevice;
LONG Result;
TCHAR szTemp[200];
int i = 0;
DEVMODE defaultMode;
ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb = sizeof(DisplayDevice);
2. Finden Sie alle Geräte
while (EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0))
{
ZeroMemory(&defaultMode, sizeof(DEVMODE));
defaultMode.dmSize = sizeof(DEVMODE);
//point 3 goes here
}
3. Detect freistehende Gerät
if (!(DisplayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP))
4. Aktivieren Sie Gerät
DEVMODE DevMode;
ZeroMemory(&DevMode, sizeof(DevMode));
DevMode.dmSize = sizeof(DevMode);
DevMode.dmFields = DM_POSITION | DM_PELSWIDTH | DM_PELSHEIGHT;
DevMode.dmPelsWidth = 1920;
DevMode.dmPelsHeight = 1080;
Result = ChangeDisplaySettingsEx(DisplayDevice.DeviceName, &DevMode, NULL, CDS_UPDATEREGISTRY, NULL);
ChangeDisplaySettingsEx(NULL, NULL, NULL, NULL, NULL);
Letzter Punkt kehrt DISP_CHANGE_FAILED Code und es ermöglichen keine Anzeige. Hatte jemand ähnliche Erfahrung?
Sie für die Eingabe Dank! Der Monitor ** wurde ** mit 'ChangeDisplaySettingsEx()' deaktiviert **, mein vollständiges Testprogramm deaktiviert sekundäre Anzeigen und sie versuchen, sie wieder zu aktivieren, beide mit 'ChangeDisplaySettingsEx()'. – Artur