Ich bin auf der Suche nach der gleichen Lösung.Ich habe den folgenden Code geschrieben ChangeDisplaySettingsEx
mit PInvoke zu nennen:
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());
Wenn der Monitor bereits aktiviert ist, ändert dies erfolgreich die Auflösung. Wenn der Monitor jedoch nicht bereits mit dem Desktop verbunden ist, wird er nicht aktiviert. Hat also jemand ein Codebeispiel, das funktioniert?
Hallo Pop, ich Ihre Methode, wenn der sekundäre Monitor bereits aktiviert ist verwenden können, aber ich kann‘ t es verwenden, um die sekundäre Methode zu aktivieren, schlägt es immer fehl. Sollte diese Methode das können? –
Dies könnte ein treiberspezifisches Problem sein, der Treiber aktiviert einen Monitor nicht automatisch, wenn die API einige gültige Monitoreinstellungen festlegt. In meinem Fall arbeitete ich mit einer alten Matrox-Karte, und ich hatte dieses Problem nicht. Es könnte nützlich sein, einige spezifische Herstellerdokumente nachzuschlagen. –
Oder besser noch, stellen Sie die Frage in MSDN Treiber-Entwicklung Foren :) –