Sto provando a seguire le istruzioni su MSDN given here per disabilitare un monitor secondario.Come disabilitare un monitor secondario (con ChangeDisplaySettingsEx)?
Sto cercando di utilizzare specificamente questo insieme di funzioni per consentire la compatibilità con le versioni precedenti di Windows.
Tuttavia, non riesco a disabilitare un monitor. Sto eseguendo e testando questo su Windows 7 x64. Tutto ciò che ottengo è uno schermo tremolante. Il codice rileva definitivamente il monitor in modo corretto: sono riuscito a modificare la risoluzione e a visualizzare facilmente le sue modalità di visualizzazione.
Ecco (parti) del mio codice - ho provato un sacco di variazioni sui campi di DEVMODE
DEVMODE deleteScreenMode;
ZeroMemory(&deleteScreenMode, sizeof(DEVMODE));
deleteScreenMode.dmSize = sizeof(DEVMODE);
deleteScreenMode.dmDriverExtra = 0;
deleteScreenMode.dmFields = DM_POSITION | DM_PELSHEIGHT | DM_PELSWIDTH;
deleteScreenMode.dmPelsWidth = 0;
deleteScreenMode.dmPelsHeight = 0;
POINTL delete;
deleteion.x=0;
deleteion.y=0;
deleteScreenMode.dmPosition = deleteion;
LONG result = ChangeDisplaySettingsEx(devName,
&deleteScreenMode,
NULL,
CDS_UPDATEREGISTRY,
NULL);
Qualcuno ha esperienza con questo? Grazie
Secondo l'articolo citato, la maschera 'dmFields' contiene più flag. Forse è necessario anche impostare (e azzerare i campi corrispondenti) per staccare il monitor? – valdo
L'ho provato, non ha funzionato. Nel loro esempio usano tutti i possibili flag - quando lo faccio, si lamenta che la modalità data non è valida. Quando rimuovo il flag DM_BITSPERPEL funziona, ma il risultato non cambia. I monitor toccano e rimangono attivi. – Alex