Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0251: Aktuelle Bildschirmauflösung erfahren

 von 

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:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetDesktopWindow, GetWindowRect

Download:

Download des Beispielprojektes [2,19 KB]

'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-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

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? ;-)