In Zoll, z.B. 21 'Monitor. Die App ist eine Standard WinForms App.
EDIT: Es scheint, dass es wirklich keinen zuverlässigen Weg gibt, um das zu erreichen, was ich brauche.
Ich denke über zwei Möglichkeiten nach, die unter besonderen Bedingungen funktionieren könnten:
Versuchen Sie, den Namen der Monitorhardware zu ermitteln. Auf meinem Dual-Monitor-System verwende ich einen SyncMaster 205BW und einen SyncMaster 173T. Dies sind 20 "und 17" Monitore. Du siehst was ich meine? Ein Problem ist jedoch, dass ich nicht sicher bin, ob Sie diese Zeichenfolgen programmgesteuert abrufen können. Windows scheint nur SyncMaster zu erhalten: screenres.png .
Sie können GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE)
verwenden, um " Höhe des physischen Bildschirms in Millimetern. " und ähnlich mit HORZSIZE
und der "Breite". Aber das funktioniert nur, wenn Sie Ihr Display kalibriert haben, glaube ich. Zumindest auf meinem System sind die Werte viel größer als die tatsächliche Höhe und Breite ...
Ich habe keine Ahnung von Ihrem Kontext, aber wenn Ihre App wirklich die physische Größe des Ausgabegeräts des Endbenutzers benötigt, warum fragen Sie ihn nicht? Sie können während des Setups leicht nach der Größe des Monitors fragen (z. B. mit dem ausgezeichneten Inno-Setup) und den Wert in der Registrierung speichern. Dann ist es trivial, eine Prozedur GetPhysicalMonitorSize
zu schreiben, die den Wert einfach aus der Registrierung liest.
Dies kann nicht garantiert werden. Windows kann die Größe des Monitors nicht kennen, es sei denn, sein Treiber fragt ihn ab und meldet die Antwort an Windows.
Allerdings möchten Sie vielleicht
ausprobieren %Vor% oder GetDeviceCaps(dc, HORZSIZE)
und GetDeviceCaps(dc, VERTSIZE)
und berechnen Sie dann das Quadrat auf der Hypotenuse.
Beachten Sie, dass es auch hier eine akzeptierte Antwort zu einer identischen Frage gibt Überlauf.
Web-App oder Desktop-App? Alles, was Sie über die Web-App herausfinden können, ist die Bildschirmauflösung des Browsers unter Verwendung von Javascript:
%Vor%Bei einer Desktop-Anwendung tun Sie Folgendes:
%Vor%Sie können die EDID in der Registrierung verwenden, um die physische Bildschirmgröße zu erhalten. Der Monitortreiber meldet die physische Bildschirmgröße an Windows.
Wenn es keine .NET-spezifische Möglichkeit gibt, können Sie immer die native Windows-API verwenden: GetSystemMetrics
mit SM_CYSCREEN
oder SM_CXSCREEN
.
Tags und Links c# visual-studio-2008