VB 5/6-Tipp 0251: Aktuelle Bildschirmauflösung erfahren
von ActiveVB
Beschreibung
Wers nicht weiß, braucht schon eine Weile bis er das Screen-Obkekt endeckt hat. Damit ist es dann ein Kinderspiel.
Update:
Außerdem wird hier auch demonstriert, wie sich das gleiche Ziel mithilfe von APIs erreichen lässt, da die obige Methode keine Ergebnisse erzielt, wenn die Auflösung geändert wird. Windows müsste dafür erst neugestartet werden.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Beschriftungsfeld "Label4" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" 'Autor: ActiveVB 'Mail: Tipps@ActiveVB.de 'Überarbeitet von Florian Rittmeier (Florian@ActiveVB.de) und Jochen Wierum (JoWi@ActiveVB.de) Option Explicit Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetWindowRect Lib "user32" ( _ ByVal hwnd As Long, _ lpRect As RECT) _ As Long Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Sub Form_Load() Dim Dhwnd As Long Dim R As RECT Dim wX As Long Dim wY As Long 'Den Desktop finden Dhwnd = GetDesktopWindow 'Die Desktopausmaße auslesen GetWindowRect Dhwnd, R Label4.Caption = R.Right & " x " & R.Bottom 'Alt: wird beim Starten von Windows gesetzt und ändert sich 'nicht, wenn die Auflösung geändert wird wX = Screen.Width / Screen.TwipsPerPixelX wY = Screen.Height / Screen.TwipsPerPixelY Label2.Caption = wX & " x " & wY End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 8 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Florian Rittmeier am 24.10.2003 um 17:12
Hallo Jürgen,
stell deine Frage doch mal im Hauptforum und erkläre genau was mit erweiterter Desktop gemeint ist.
Gruß Florian
Kommentar von Jürgen Schneiderat am 22.10.2003 um 12:50
Zweischiembetrieb.
Erster Desktop auf 800x600 zweiter (erweiterter) Desktop.
auf anderer Auflösung. Wie bekomme ich das heraus?
Hat der erweiterte Desktop einen eigenen haendler?
Fängt die Auflösung des erweiterten Desktops wieder bei 1 an oder bei 801?
Kommentar von Frank Nöther am 12.10.2003 um 01:52
Kurze, knappe funktionierende Lösung.
-funzt sogar im Modul einer Access2000 DB.
Supi - spart mir ne Menge Zeit für´s ausknobeln.
Lediglich den "alten" Teil musste ich streichen -es gibt in Access ein andres SCREEN-Modell.
Kommentar von Hans Krüger am 29.08.2003 um 22:11
Zunächst kam der Text "0 x 1024". Ich habe dann R.Right durch R.Top ersetzt und den korrekten String "1280 x 1024" erhalten.
Kommentar von MichaelG. am 22.08.2003 um 13:22
Das Desktopwindow kann auch geändert werden. 1. Durch Tools (Hier im Upload gibts als Beispiel BigScreen.zip)
2. oder duch Dual-Kopf Grafikkarten die den Destkop über zwei Monitore verteilen.
Selbst das auslesen aus dem Grafik-Adapter gibt wegen Bugs bei einigen GraKas nicht immer das richtige Ergebnis.
Der einzige mir bekannte Weg ist das auslesen der Einstellung. Entweder über die Reg oder über die API GetSystemMetrics 0 und 1 (Index 0 für X-Auflösung, 1 für Y)
Hier gibts ein Testprojekt von mir was über das Screen-Objekt (welches manchmal nur Schwachsinn ausgibt), den Desktop und dem Graphik-Adapter ausliest. Auf 3 Testrechner gab es min. immer ein flasches Ergebnis.
Gruß
Michael
Kommentar von da_hoschla am 12.07.2001 um 15:56
ich bekomme (vb6/win2k) bei einer auflösung von 1024/768 mit der funktion '768x768' zurück.
Kommentar von Götz Reinecke am 04.11.2000 um 18:51
Na, ein Obkekt ist die große Schwester von Objekt aus der Familie der Tippelfehleries, kanntest Du die noch nicht ;-)
Kommentar von fill am 04.11.2000 um 18:42
...bis er das Screen-Obkekt endeckt hat...
Was ist den ein Obkekt? ;-)