2009-07-05 4 views
4

Ich möchte in der Lage sein, meinen sekundären Monitor mit C# in Windows Vista zu aktivieren. Hier ist, was ich tue:Aktivieren Sie den sekundären Monitor programmgesteuert

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

Das ist nicht meinen zweiten Monitor nicht beeinflusst, selbst wenn ich 0 als Ergebnis zu erhalten (was bedeutet, erfolgreich).

Was habe ich falsch gemacht?

Vielen Dank.

Antwort

1

Ich denke, Sie müssen mehr als nur die Position einstellen, könnten Sie wahrscheinlich die aktuellen Einstellungen von EnumDisplaySettings (mindestens die Größe und Farbe, vielleicht auch Bildwiederholfrequenz)

0

Ich habe es selbst nicht versucht, aber es scheint, dass die Leute über this forum einen Hinweis haben. Der Code ist nicht C#, aber es ist verständlich.