Mahlzeit zusammen.
Ich habe sehr viel gesucht, ausprobiert und wieder verworfen, für ein eigentlich banales Problem.
Ich muß ein bestimmtes Programm in einer geringeren Auflösung laufen lassen.
Wenn ein Benutzer also das Programm XYZ startet, soll der Monitor, auf dem das Programm gestartet wird, in eine andere Auflösung wechseln.
Aktuelle Auflösung ist 1920 x 1080, gewünscht wäre z.B. 1680 x 1050.
Ich habe diverse Tools gefunden, die zwar die Auslösung ändern können, aber immer nur für ALLE angeschlossenen Monitore oder für den Hauptmonitor. Ein Programm konnte ich sogar den Namen des Monitors eingeben, für den die Änderung gelten soll. Nützt aber nichts, wenn 3 angeschlossene Monitore den selben Namen haben.
Nun, Windows kann es ja, jedem Monitor eine eigene Auflösung geben, also sollte es doch Programmiertechnisch auch machbar sein.
Am liebsten wäre mir eine Consolenanwendung, die erst die Auslösung ändert, dann das Programm nach startet und nach Beendigung des Programms wieder die vorherige Auflösung einstellt.
Natürlich sollte das ganze auch ohne Neustart des Computers gehen, also ein Registery Hack wäre da wohl eher nicht so angebracht, denke ich.
Tja, wo setzt man da nun an. Eine Funktion im NET Framework scheint es nicht zu geben.
Analog zu Zweiten Monitor deaktivieren empfehle ich dir auch .NET Wrapper for ChangeDisplaySettingsEX mal auszuprobieren.
PS: Hier der direkte P/Invoke-Link: ChangeDisplaySettingsEx
So wie ich das interpretiere benötigt man aber jeweils den (eindeutigen) DeviceName...
Sieht auf jeden Fall schon mal sehr Interessant aus. Danke für den Tipp, ich schau mir das gleich mal genauer an.