tutorials.de Buch-Aktion 05/2012
  • [VB.NET] Beispiel: Alle unterstützten Bildschirmauflösungen ermitteln

    Hallo zusammen

    Mit folgendem Code ist es möglich sich alle vom System alle unterstützten Bildschirmauflösungen auflisten zu lassen.
    Dabei wird die Windows API Funktion EnumDisplaySettings der user32.dll verwendet.
    Für das Beispiel ist die Einbindung das Namespace System.Runtime.InteropServices erforderlich.

    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    
        <StructLayout(LayoutKind.Sequential)> _
        Public Structure DEVMODE1
            <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
            Public dmDeviceName As String
            Public dmSpecVersion As Short
            Public dmDriverVersion As Short
            Public dmSize As Short
            Public dmDriverExtra As Short
            Public dmFields As Integer
     
            Public dmOrientation As Short
            Public dmPaperSize As Short
            Public dmPaperLength As Short
            Public dmPaperWidth As Short
     
            Public dmScale As Short
            Public dmCopies As Short
            Public dmDefaultSource As Short
            Public dmPrintQuality As Short
            Public dmColor As Short
            Public dmDuplex As Short
            Public dmYResolution As Short
            Public dmTTOption As Short
            Public dmCollate As Short
            <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
            Public dmFormName As String
            Public dmLogPixels As Short
            Public dmBitsPerPel As Short
            Public dmPelsWidth As Integer
            Public dmPelsHeight As Integer
     
            Public dmDisplayFlags As Integer
            Public dmDisplayFrequency As Integer
     
            Public dmICMMethod As Integer
            Public dmICMIntent As Integer
            Public dmMediaType As Integer
            Public dmDitherType As Integer
            Public dmReserved1 As Integer
            Public dmReserved2 As Integer
     
            Public dmPanningWidth As Integer
            Public dmPanningHeight As Integer
        End Structure
     
        <DllImport("user32.dll")> _
        Public Shared Function EnumDisplaySettings(ByVal deviceName As String, ByVal modeNum As Integer, ByRef devMode As DEVMODE1) As Integer
        End Function
     
        Function GetSupportedResolutions() As List(Of String)
            Dim list1 As New List(Of String)
     
            Dim lResult As Long
            Dim i As Long
            Dim DevM As New DEVMODE1
     
            i = 0
            Do
                lResult = EnumDisplaySettings(Nothing, i, DevM)
                If lResult = 0 Then Exit Do
                With DevM
                    Dim res As String = .dmPelsWidth & "x" & .dmPelsHeight
                    If Not list1.Contains(res) AndAlso .dmBitsPerPel = 32 Then
                        list1.Add(res)
                    End If
                End With
                i = i + 1
            Loop
     
            Return list1
        End Function
     


    Kommentare 1 Kommentar
    1. Avatar von SpeedyX
      SpeedyX -
      Hallo, ich wollte mal Fragen, ob man mit VB auch einen Bildschirm ausschalten kann. Also dass man ein Programm erstellt, dass immer den rechten Bildschirm deaktiviert und nach dem schließen einer Anwendung wieder aktiviert. Ich habe nämlich Dualscreen und muss bei vielen Spielen den anderen Bildschirm vorher über das Kontextmenü des Dektops auf Bildschirmauflösung klicken und dann die andere Anzeige deaktivieren. Das ist zwar nicht schwer, aber ginge das irgendwie auch anders? Das wäre echt cool.
      Danke schonmal im voraus.
      MFG
      SpeedyX

      PS: Ich habe schon nirsoftcmd empfohlen bekommen, aber versteh das irgendwie nicht. Also wenn es geht währ noch am einfachsten ne Batch-Datei.
    Kommentare Kommentar schreiben

    Klicke hier, um dich anzumelden

    Wie heißt die Bundeskanzlerin der BRD mit Nachnamen? Angela...