Pregunta

Quiero ser capaz de permitir que mi monitor secundario con C # en Windows Vista. Aquí es lo que hago:

SafeNativeMethods.EnumDisplayDevices(null, (uint)id, ref d, (uint)0);
...
SafeNativeMethods.EnumDisplaySettings(d.DeviceName, -2, ref mode0);
...
SafeNativeMethods.DEVMODE dm = mode0;

dm.dmPosition.x = 1440;
dm.dmFields = SafeNativeMethods.DM_POSITION;
long result = SafeNativeMethods.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_NORESET| SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero);
result = SafeNativeMethods.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero);

Esto no afecta a mi monitor secundario, incluso si consigo 0 como resultado (lo que significa ÉXITO).

¿Qué he hecho mal?

Gracias.

¿Fue útil?

Solución

Creo que es necesario establecer más que el campo Posición, que probablemente se podría obtener la configuración actual de EnumDisplaySettings (al menos el tamaño y color, tal vez también la frecuencia de actualización)

Otros consejos

No he probado a mí mismo, pero parece que la gente encima en este foro tienen ni idea. El código no es C #, pero es comprensible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top