Gibt es eine Möglichkeit, die physische Größe des Monitors zu bestimmen?

8

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.

    
AngryHacker 10.06.2010, 23:50
quelle

5 Antworten

2

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.

Andreas Rejbrand 11.06.2010, 12:48
quelle
5

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.

    
Mawg 11.06.2010 00:05
quelle
2

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%     
Kevin Raffay 10.06.2010 23:57
quelle
2

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.

    
ZeroElement 04.10.2010 18:46
quelle
1

Wenn es keine .NET-spezifische Möglichkeit gibt, können Sie immer die native Windows-API verwenden: GetSystemMetrics mit SM_CYSCREEN oder SM_CXSCREEN .

    
Andreas Rejbrand 10.06.2010 23:53
quelle

Tags und Links