Estoy buscando la misma solución.He escrito el siguiente código para llamar ChangeDisplaySettingsEx
con PInvoke:
DEVMODE dm = new DEVMODE();
dm.dmSize = (short)Marshal.SizeOf(dm);
dm.dmPelsWidth = 1680;
dm.dmPelsHeight = 1050;
dm.dmBitsPerPel = 32;
dm.dmDisplayFrequency = 60;
dm.dmFields = DevModeFields.DM_BITSPERPEL | DevModeFields.DM_PELSWIDTH |
DevModeFields.DM_PELSHEIGHT | DevModeFields.DM_DISPLAYFREQUENCY;
int res = ChangeDisplaySettingsEx(@"\\.\DISPLAY2", ref dm, IntPtr.Zero, CDS_RESET | CDS_UPDATEREGISTRY, IntPtr.Zero);
Console.WriteLine("result = " + res.ToString());
Si el monitor ya está activado, esto cambia la resolución con éxito. Pero si el monitor ya no está conectado al escritorio, esto no lo activará. Entonces, ¿alguien tiene un ejemplo de código que funciona?
Hola Pop, puedo usar su método si el monitor secundario ya está activado, pero no puedo' t usarlo para activar el método secundario, siempre falla. ¿Debería este método ser capaz de hacer esto? –
Esto podría ser un problema específico del controlador, el controlador no habilita automáticamente un monitor cuando la API establece algunas configuraciones de monitor válidas. En mi caso, estaba trabajando con una vieja tarjeta Matrox, y no tuve este problema. Puede ser útil buscar algunos documentos específicos del fabricante. –
O mejor aún, formule la pregunta en los foros de desarrollo de controladores de MSDN :) –