Hallo,
ich habe eine einfache C#-Konsolenanwendung geschrieben, die die Auflösung und den Ort aller angeschlossenen Monitore ausgibt; und das unter Beachtung der eingestellten Skalierungsfaktoren pro Monitor:
class Program
{
static void Main(string[] args)
{
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
{
Console.WriteLine(screen.DeviceName + " - " + screen.Bounds.Size.Width + "x" + screen.Bounds.Size.Height +" - X=" + screen.Bounds.X + ", Y=" + screen.Bounds.Y);
}
Console.ReadKey();
}
Das ganze funktioniert einwandfrei. Bei einer nativen Monitorauflösung von 1920x1080 und einem (in den Windows Anzeigeeinstellungen) eingestellten Skalierungsfaktor von 125% gibt mir die Anwendung 1536 x 864 aus, was ja der nativen Auflösung verechnet mit
der Skalierung entspricht.
Nun habe ich den Code in eine .NET Framework DLL gepackt und dabei statt der Konsolenausgabe die Daten in Variablen abgelegt. Das verwunderliche: Obwohl ich auf genau dieselben Eigenschaften zurückgreife, erhalte ich ausschließlich die native Auflösung und
keinerlei skalierte Werte. Weiß jemand, warum sich dieselben Funktionen/Eigenschaften in einer DLL komplett anders verhalten? Muss vielleicht ein Fenster offen sein (z.B. die Konsole), damit das ganze funktioniert?
Danke schon mal!