DisplaySettings

    • Offizieller Beitrag

    Ich habe vor, ein kleines Tool zum ändern der Bildschirm-Auflösung zu schreiben.

    Dazu bräuchte ich mal eure Hilfe. Dieses kleine Testscript soll alle verfügbaren Auflösungen (Einschränkung: nur die 32 Bit-Auflösungen) von allen angeschlossenen Monitoren liefern:

    Bei mir (Windows 7, 64 Bit) funktioniert das auch einwandfrei, aber ich weiß nicht, ob das auch unter anderen Windows-Versionen der Fall ist.

    Wenn alles funktioniert gibt das Script pro angeschlossenen Monitor ein Array aus, in dem die Auflösungen aufgelistet sind und die gerade aktive Auflösung entsprechend markiert ist.

    Es würde mir helfen, wenn ihr das Script bei euch mal testen könnt und mir eine Rückmeldung gebt.

    Noch eine kleine Zusatzfrage: Gibt es noch jemanden, der eine nicht-32-Bit-Auflösung benutzt?

  • Hallo Oscar !

    Bei 32-Bit Auflösungen sieht es bei mir wie folgt aus :

    Wähle ich eine andere Auflösung, dann wird dort '(Aktiv)' korrekt angezeigt.

    Wenn ich die Farbtiefe auf 16-Bit einstelle, dann wird keine der Auflösungen als '(Aktiv)' markiert, es kommt aber auch kein Fehler.

    Systemangaben :

    - Windows 7 Servicepack1 - 64 Bit

    - Monitor : Samsung SyncMaster T220

    - Grafikkarte : NVIDIA GeForce GTX 750 TI

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Oscar

    Dieses kleine Testscript soll alle verfügbaren Auflösungen (Einschränkung: nur die 32 Bit-Auflösungen) von allen angeschlossenen Monitoren liefern

    Ich habe das Skript gerade mit Laptop und Fernseher getestet.

    Erst einmal: Die aktuelle Auflösung wird korrekt identifiziert. Ich habe da mit geänderten Auflösungen auf beiden Bildschirmen die richtigen Ergebnisse erhalten.

    Allerdings kann ich die Angaben von _WinAPI_EnumDisplaySettings nicht nachvollziehen. In meinen Anzeigeeinstellungen und im Grafiktreiber kann ich nur auf mindestens 800 x 600 gehen (Liegt wohl an einer Beschränkung in Windows?). Das Skript zeigt aber weitere, kleinere Auflösungen an. Unter die 800 x 600 würde ich aber nicht gehen wollen unter den gegebenen Bedingungen nicht wechseln wollen..

    Spoiler anzeigen


    Monitor:

    [0]|1920 x 1080, 32 bit (Aktiv)

    [1]|1680 x 1050, 32 bit

    [2]|1600 x 900, 32 bit

    [3]|1440 x 900, 32 bit

    [4]|1400 x 1050, 32 bit

    [5]|1366 x 768, 32 bit

    [6]|1360 x 768, 32 bit

    [7]|1280 x 1024, 32 bit

    [8]|1280 x 960, 32 bit

    [9]|1280 x 600, 32 bit

    [10]|1280 x 720, 32 bit

    [11]|1280 x 768, 32 bit

    [12]|1280 x 800, 32 bit

    [13]|1152 x 864, 32 bit

    [14]|1024 x 768, 32 bit

    [15]|800 x 600, 32 bit

    [16]|640 x 480, 32 bit

    [17]|640 x 400, 32 bit

    [18]|512 x 384, 32 bit

    [19]|400 x 300, 32 bit

    [20]|320 x 240, 32 bit

    [21]|320 x 200, 32 bit

    Fernseher:

    [0]|1920 x 1080, 32 bit (Aktiv)

    [1]|1680 x 1050, 32 bit

    [2]|1600 x 1200, 32 bit

    [3]|1600 x 900, 32 bit

    [4]|1440 x 900, 32 bit

    [5]|1400 x 1050, 32 bit

    [6]|1366 x 768, 32 bit

    [7]|1360 x 850, 32 bit

    [8]|1360 x 768, 32 bit

    [9]|1280 x 1024, 32 bit

    [10]|1280 x 960, 32 bit

    [11]|1280 x 600, 32 bit

    [12]|1280 x 720, 32 bit

    [13]|1280 x 768, 32 bit

    [14]|1280 x 800, 32 bit

    [15]|1152 x 864, 32 bit

    [16]|1024 x 768, 32 bit

    [17]|800 x 600, 32 bit

    [18]|720 x 576, 32 bit

    [19]|720 x 480, 32 bit

    [20]|640 x 480, 32 bit

    [21]|640 x 400, 32 bit

    [22]|512 x 384, 32 bit

    [23]|400 x 300, 32 bit

    [24]|320 x 240, 32 bit

    [25]|320 x 200, 32 bit

    EDIT: Achso. Win 10 x64

    Grüße autoiter

    • Offizieller Beitrag

    Wenn ich die Farbtiefe auf 16-Bit einstelle, dann wird keine der Auflösungen als '(Aktiv)' markiert, es kommt aber auch kein Fehler.

    Ja, weil ich die Ausgabe auf die 32Bit-Auflösungen beschränke. Du müsstest dann in Zeile 8 "_GetDisplaySettings" mit 16 als zweiten Parameter aufrufen (32 ist Standard).

    Gibt es wirklich noch Anwender, die "nur" 16 oder gar 8 Bit verwenden?

    In meinen Anzeigeeinstellungen und im Grafiktreiber kann ich nur auf mindestens 800 x 600 gehen (Liegt wohl an einer Beschränkung in Windows?). Das Skript zeigt aber weitere, kleinere Auflösungen an.

    Ich denke auch, dass Windows die Auflösung "künstlich" nach unten begrenzt, obwohl Grafikkarte und Monitor durchaus auch kleinere Auflösungen anzeigen können.

    _WinAPI_EnumDisplaySettings gibt halt alle verfügbaren/darstellbaren Auflösungen aus.

    Mein Windows 7 lässt in den Einstellungen auch nur 800x600 als kleinste Auflösung zu, aber ich hab's gerade getestet und auch auf meinem 32 Zoll Monitor kann ich auf 640x480 umschalten.

    Das ist nicht sonderlich sinnvoll, weil einige Fenster dann nicht mehr vollständig angezeigt werden, aber es funktioniert durchaus.

  • Hallo Oscar !

    Ja, weil ich die Ausgabe auf die 32Bit-Auflösungen beschränke. Du müsstest dann in Zeile 8 "_GetDisplaySettings" mit 16 als zweiten Parameter aufrufen (32 ist Standard).

    Ich weiß, Du hattest oben ja bereits geschrieben : (Einschränkung: nur die 32 Bit-Auflösungen)

    Setze ich den optionalen zweiten Parameter auf 16, dann erscheint erwartungsgemäß :

    Sowohl über die Windows-Anzeige, als auch über die NVIDIA-Systemsteuerung meiner Grafikkarte, beträgt die kleinste einstellbare Auflösung : 800x600

    Gibt es wirklich noch Anwender, die "nur" 16 oder gar 8 Bit verwenden?

    Nun, ich jedenfalls nicht. Soweit ich mich erinnere, habe ich das auch bei keinem PC in den letzten Jahren gesehen.

    Nachtrag :

    Ich habe es mal, als Hardcoretest, auf einem Uralt-Notebook mit Win XP Home SP3 und Onboardchip laufen lassen. Auch hier keine Probleme.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (21. Oktober 2017 um 17:22) aus folgendem Grund: Beitrag erweitert

  • Hier mein Ergebnis unter Win10 x64. Die aktive Auflösung ist die, welche ich bei mir aktiviert habe.

    Row|Col 0

    [0]|1920 x 1080, 32 bit (Aktiv)

    [1]|1680 x 1050, 32 bit

    [2]|1600 x 900, 32 bit

    [3]|1440 x 900, 32 bit

    [4]|1400 x 1050, 32 bit

    [5]|1366 x 768, 32 bit

    [6]|1360 x 768, 32 bit

    [7]|1280 x 1024, 32 bit

    [8]|1280 x 960, 32 bit

    [9]|1280 x 600, 32 bit

    [10]|1280 x 720, 32 bit

    [11]|1280 x 768, 32 bit

    [12]|1280 x 800, 32 bit

    [13]|1152 x 864, 32 bit

    [14]|1024 x 768, 32 bit

    [15]|800 x 600, 32 bit

    [16]|640 x 480, 32 bit

    [17]|640 x 400, 32 bit

    [18]|512 x 384, 32 bit

    [19]|400 x 300, 32 bit

    [20]|320 x 240, 32 bit

    [21]|320 x 200, 32 bit


    Ich habe vor, ein kleines Tool zum ändern der Bildschirm-Auflösung zu schreiben.

    Wenn Du es dann hier zur Verfügung stellen würdest, fände ich es eine klasse Sache, vor allem dann, wenn das Tool portabel und auch in einer WinPE nutzbar sein wird? :Glaskugel:

    • Offizieller Beitrag

    Wenn Du es dann hier zur Verfügung stellen würdest, fände ich es eine klasse Sache, vor allem dann, wenn das Tool portabel und auch in einer WinPE nutzbar sein wird?

    Ja klar, wenn es fertig ist, wird es auch hier veröffentlicht.

    Portabel sollte nicht das Problem sein. WinPE weiß ich nicht, ob AutoIt-Scripte im "kleinen" Windows laufen.

    Hier ist mal noch eine ausführlichere Version des obigen Scripts (es werden jetzt auch die verschiedenen Frequenzen angezeigt und es ist konfigurierbar aber es wird nicht mehr der aktive Modus markiert) :

  • Portabel sollte nicht das Problem sein. WinPE weiß ich nicht, ob AutoIt-Scripte im "kleinen" Windows laufen.

    Oh ja, AutoIt Scripte funktionieren kompiliert in WinPE. Viele Programme die für WinPE geschustert wurden funktionieren bestens in WinPE. Holger Kotsch hat PE-Network in AutoIt programmiert und ist eines der wichtigsten Scripte in WinPE die ich kenne. Gut, man muss schauen welche Reg.-Einträge nötig sind und welche .dll zur Ausführung benötigt wird.

    Hier ist mal noch eine ausführlichere Version des obigen Scripts (es werden jetzt auch die verschiedenen Frequenzen angezeigt und es ist konfigurierbar aber es wird nicht mehr der aktive Modus markiert

    Ich blicke das Script nicht ganz aber kann es sein, dass es mit folgender Zeile im ersten Script zusammenhängt? $sOut &= StringReplace($sSettings, @LF, ($sSettings = $sCurrent ? ' (Aktiv)' : '')) & @LF

    Im Zweiten Script fehlt zumindest ver Verweis auf (Aktiv)

    • Offizieller Beitrag

    Ich blicke das Script nicht ganz aber kann es sein, dass es mit folgender Zeile im ersten Script zusammenhängt?

    Ja, ich hatte das im zweiten Script absichtlich weggelassen. Damit wollte ich jetzt erstmal alle Auflösungen plus Farbtiefe und Frequenz in einem Array haben.

    Der Smilie (:() sollte da eigentlich gar nicht hin. Das hat die Forensoftware automatisch ersetzt (Klammer zu und Doppelpunkt).

    • Offizieller Beitrag

    Verdammt!

    Da läuft irgendwas schief! Ich bekomme hier falsche Werte angezeigt.

    Ich habe zwei Monitore mit folgenden Modi:

    Display1: 2560 x 1440, 32 Bit, 60 Hz

    Display2: 1920 x 1200, 32 Bit, 60 Hz

    aber das folgende Script:

    AutoIt
    #include <WinAPIGdi.au3>
    $aDS = _WinAPI_EnumDisplaySettings('\\.\Display1', $ENUM_CURRENT_SETTINGS)
    ConsoleWrite(StringFormat('-> Current Settings: %d x %d, %d Bit, %d Hz\n', $aDS[0], $aDS[1], $aDS[2], $aDS[3]))
    ConsoleWrite('-> DesktopRefresh: ' & @DesktopRefresh & @CRLF)

    gibt mir das aus:

    Code
    \\.\Display1
    -> Current Settings: 2560 x 1440, 32 Bit, 59 Hz
    -> DesktopRefresh: 59
    
    \\.\Display2
    -> Current Settings: 1920 x 1200, 32 Bit, 59 Hz
    -> DesktopRefresh: 59

    Die Frequenz stimmt nicht! Da steht jedes Mal 59 Hz, obwohl 60 Hz eingestellt sind und auch auf dem OnScreenMenü der Monitore so angezeigt werden.

    Warum kommen da falsche Werte raus und ist das bei euch genauso?

  • Hallo Oscar !

    Test auf die Schnelle : Bei mir wirft das Skript in Zeile 3 einen Error : ==> Subscript used on non-accessible variable

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Bei mir stimmen die eingestellten Werte den ausgelesenen. (Habe die Einstellung auch mal geändert):

    Code
    -> Current Settings Display1: 1920 x 1080, 32 Bit, 60 Hz
    -> DesktopRefresh: 60
    -> Current Settings Display2: 1920 x 1080, 32 Bit, 50 Hz
    -> DesktopRefresh: 60
    
    
    -> Current Settings Display1: 1920 x 1080, 32 Bit, 48 Hz
    -> DesktopRefresh: 48
    -> Current Settings Display2: 1920 x 1080, 32 Bit, 50 Hz
    -> DesktopRefresh: 48

    Musashi Du hast sicher kein zweites Display aktiv, oder? (\\.\Display1)

    Grüße autoiter

  • Du hast sicher kein zweites Display aktiv, oder? (\\.\Display1)

    Nein :Face:

    Hier meine Werte für DISPLAY1 :

    -> Current Settings: 1680 x 1050, 32 Bit, 59 Hz

    -> DesktopRefresh: 59

    Im System eingestellt sind 60 Hz, also wie bei Oscar.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    2 Mal editiert, zuletzt von Musashi (22. Oktober 2017 um 16:29)

  • Oh, sorry! Ich hatte noch DISPLAY2 drinstehen. Hab's oben geändert.

    Das hätte ich aber auch selbst merken müssen ich Depp ^^

    Musashi, Du hast auch eine NVIDIA, oder?

    Ich habe meine Systemangaben in Beitrag #2 bereits gepostet, aber doppelt hält bekanntlich besser ;):

    - Windows 7 Pro Servicepack 1 - 64 Bit

    - Monitor : Samsung SyncMaster T220

    - Grafikkarte : NVIDIA GeForce GTX 750 TI

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ja Oscar , ich nutze Windows 10.

    Als Treiber ist der Intel Treiber in meinem Notebook im Desktop-Betrieb aktiv. Also einfach über die CPU. Das könntet ihr vllt. gegen testen?

    Ich weiß nichts über die Aussagekraft. Aber in einer Windows 7 VM habe ich auf Monitor 1 bei Einstellung 60 Hz auch:

    Code
    -> Current Settings Display1: 1920 x 1080, 32 Bit, 60 Hz
    -> DesktopRefresh: 60

    Grüße autoiter

  • Ja Oscar, ich nutze Windows 10.

    Als Treiber ist der Intel Treiber in meinem Notebook im Desktop-Betrieb aktiv. Also einfach über die CPU. Das könntet ihr vllt. gegen testen?

    Ich habe bei mir nicht das Riesenpaket "Nvidia GeForce Experience", sondern 'nur' die reine Treibervariante von GeForce installiert. GeForce Experience bringt für meinen Geschmack zu viele Extras mit, die ich auf meinem System nicht haben will.

    Der Ansatz von autoiter verdient aber Beachtung. Möglicherweise liegt das Problem tatsächlich am GeForce-Treiber selbst. Es wäre durchaus denkbar, dass der von Intel bzw. Windows mitgelieferte Treiber dieses Refreshproblem nicht hat.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Oscar !

    Nachtrag zu Beitrag #17 :

    Bei meinem Test (Beitrag #13) erhielt ich folgende Werte :

    Hier meine Werte für DISPLAY1 :

    -> Current Settings: 1680 x 1050, 32 Bit, 59 Hz

    -> DesktopRefresh: 59

    Im System eingestellt sind 60 Hz, also wie bei Oscar.

    Ich habe jetzt einige weitere Tests gemacht, und den Test von oben noch mal wiederholt :

    1. -> Current Settings: 1680 x 1050, 32 Bit, 60 Hz -> DesktopRefresh: 60 -> jetzt OK  (vorher : 59 / 59 !)

    2. -> Current Settings: 1600 x 1024, 32 Bit, 60 Hz -> DesktopRefresh: 60 -> OK

    3. -> Current Settings: 1280 x 768, 32 Bit, 60 Hz -> DesktopRefresh: 60 -> OK

    4. -> Current Settings: 800 x 600, 32 Bit, 60 Hz -> DesktopRefresh: 60 -> OK

    Auffällig ist 1. -> am System wurde nichts geändert !


    Danach habe ich das System mal im abgesicherten Modus gestartet (dabei sollte der NVidiatreiber ja eigentlich deaktiv sein) :

    -> Current Settings: 800 x 600, 32 Bit, 1 Hz -> DesktopRefresh: 1 -> ?

    Keine Ahnung, ob dich das irgendwie weiterbringt :/

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Hmm...wenn ich bei mir eine geringere (1920 x 1080) Auflösung einstelle, dann wird korrekt 60 Hz angezeigt.

    Bei allen Auflösungen darüber (bis 2560 x1440) schaltet die Monitor-Anzeige immer wieder auf 59 Hz. Also so, wie hier (unter: "More Information") beschrieben:

    https://support.microsoft.com/en-us/help/200…selected-settin

    "No action is needed." Tja, und was heißt das nun für mein Tool? Sind jetzt alle 59 und 60 Hz Auflösungen gleich?

    Windows sagt 59 Hz, mein Monitor sagt 60 Hz....