Domanda

Voglio essere in grado di abilitare il mio monitor secondario con C # in Windows Vista. Ecco quello che faccio:

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);

Ciò non pregiudica il mio monitor secondario, anche se ho 0 come risultato (che significa SUCCESSO).

Che cosa ho fatto di male?

Grazie.

È stato utile?

Soluzione

Credo che è necessario impostare più di un semplice campo Posizione, probabilmente si potrebbe ottenere le impostazioni correnti da EnumDisplaySettings (almeno la dimensione e il colore, forse anche la frequenza di aggiornamento)

Altri suggerimenti

Non ho provato io stesso, ma sembra che la gente oltre a questo forum hanno un indizio. Il codice non è C #, ma è comprensibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top