TFT Auflösung ändern

  • Erstmal ein Hallo zusammen. Bin hier neu und habe von AUTO IT auch nicht soviel Ahnung (Nur die Tutorials durchgemacht)

    Aber das Tool finde ich klasse wie man etwas automatisieren kann.

    Zu meinem Problem.

    Ich möchte mir gern in Autostart ein script einbauen, dass die Auflösung von meinem Computer bzw TFt ändert.

    Und zwar ist die Auflösung die ich habe meinen eltern zu klein. Die sehen da nichts und ändern jedesmal die Auflösung. Mir ist das dann zu doof es jedesmal zu ändern.

    Deswegen dachte ich, ich kann da ein script einbauen.

    Run("control.exe DESK.CPL,,3")
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox1", "SelectString", "Höchste (32 Bit)")


    Das Problem ist nun ich möchte den Schieberegler der die Auflösung regelt nun ansprechen das er entweder das Maximale ( also 1024x768)

    oder eben die werte 1024x768 nimmt (wenn es doch größer hinaus gehen sollte)

    Wie ist da der Befehl? Könnt ihr mir weiter helfen?


    Grüße Anna

    • Offizieller Beitrag

    Hi und Willkommen,

    das geht recht einfach, das AutoIt Window Info-Tool gibt dir die nötigen Angaben.
    Ich habs mal erstellt.
    Um zwischen zwei Zuständen hin- und herzuschalten, brauchst du ja nur eine Soll- und Istvariable mit den entsprechenden Angaben führen und einsetzen.

    Spoiler anzeigen
    [autoit]

    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $Zielwert1 = '800 x 600 Pixel'
    Global $Zielwert2 = '1024 x 768 Pixel'
    Global $txt

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')

    [/autoit] [autoit][/autoit] [autoit]

    While True
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    If $txt = $Zielwert2 Then
    ExitLoop
    Else
    If Number(StringLeft($txt, 4)) < Number(StringLeft($Zielwert2, 4)) Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    Else
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    EndIf
    EndIf
    Sleep(100)
    WEnd
    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit]
  • Hi,

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _ChangeScreenRes()
    ; Description: Changes the current screen geometry, colour and refresh rate.
    ; Version: 1.0.0.1
    ; Parameter(s): $i_Width - Width of the desktop screen in pixels. (horizontal resolution)
    ; $i_Height - Height of the desktop screen in pixels. (vertical resolution)
    ; $i_BitsPP - Depth of the desktop screen in bits per pixel.
    ; $i_RefreshRate - Refresh rate of the desktop screen in hertz.
    ; Requirement(s): AutoIt Beta > 3.1
    ; Return Value(s): On Success - Screen is adjusted, @ERROR = 0
    ; On Failure - sets @ERROR = 1
    ; Forum(s): http://www.autoitscript.com/forum/index.php?showtopic=20121
    ; Author(s): Original code - psandu.ro
    ; Modifications - PartyPooper
    ;
    ;===============================================================================
    Func _ChangeScreenRes($i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh)
    Local Const $DM_PELSWIDTH = 0x00080000
    Local Const $DM_PELSHEIGHT = 0x00100000
    Local Const $DM_BITSPERPEL = 0x00040000
    Local Const $DM_DISPLAYFREQUENCY = 0x00400000
    Local Const $CDS_TEST = 0x00000002
    Local Const $CDS_UPDATEREGISTRY = 0x00000001
    Local Const $DISP_CHANGE_RESTART = 1
    Local Const $DISP_CHANGE_SUCCESSFUL = 0
    Local Const $HWND_BROADCAST = 0xffff
    Local Const $WM_DISPLAYCHANGE = 0x007E
    If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting
    If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting
    If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting
    If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting
    Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
    Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE))
    If @error Then
    $B = 0
    SetError(1)
    Return $B
    Else
    $B = $B[0]
    EndIf
    If $B <> 0 Then
    DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
    DllStructSetData($DEVMODE, 4, $i_Width, 2)
    DllStructSetData($DEVMODE, 4, $i_Height, 3)
    DllStructSetData($DEVMODE, 4, $i_BitsPP, 1)
    DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5)
    $B = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
    If @error Then
    $B = -1
    Else
    $B = $B[0]
    EndIf
    Select
    Case $B = $DISP_CHANGE_RESTART
    $DEVMODE = ""
    Return 2
    Case $B = $DISP_CHANGE_SUCCESSFUL
    DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
    DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
    "int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width)
    $DEVMODE = ""
    Return 1
    Case Else
    $DEVMODE = ""
    SetError(1)
    Return $B
    EndSelect
    EndIf
    EndFunc ;==>_ChangeScreenRes

    [/autoit]
  • wo habt ihr immer die werte für die DLLCALLs her - es ist zum Mäuse melken ^^

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

  • @ Daniel W

    Danke das habe ich auch schon gesehen.

    Leider beschäftige ich mich grade 2 Wochen mit AutoIT und da ist mir das zu hoch *g* sorry

    @Bug Fix

    SUUUUUPER

    Jetzt hätte ich aber noch einige Fragen:

    1) So wie ich das verstehe, Fragst du ab, ob er am Anfang die Auflösung 800 x 600 hat. Falls Ja soll er dann auf 1024*768 umstellen.

    Kannst du das umschreiben, das er unabhängig davon welche Auflösung momentan eingestellt ist zB 1280*1024 auf 1024*768 umstellt?

    2) Fragt er auch ab wieviel bit er eingestellt hat ? Also ID:1807. Wenn ich auf 16Bit einstelle und den Script ausführe, stellt er sich automatisch auf 32Bit. Was auch gut und richtig ist. Nur wo sehe ich das in deinem genialen Script?


    und 3)

    Wenn ich bei Zielwert2 folgendes eingebe

    Global $Zielwert2 = '1280 x 1024 Pixel'

    also 1280*1024 anstelle 1024*768 und den script dann ausführe springt er mir in meinen einstellungen in der schieberegister ganz schnell von links nach rechts (kannst es ja mal testen)

    Woran kann das liegen ?

    Das ist unabhängig davon ab welcher Auflösung ich den script starte

    also 800*600 oder 1024*768. Er kommt irgendwie nicht durch.


    LG

    Anna

  • Moin,

    Du kannst auch 1365VidChng.exe nehmen ...

    Spoiler anzeigen

    http://unattended.msfn.org/files/global/1365Vidchng.zip


    Gruß
    Greenhorn


    • Offizieller Beitrag
    Zitat

    1) So wie ich das verstehe, Fragst du ab, ob er am Anfang die Auflösung 800 x 600 hat. Falls Ja soll er dann auf 1024*768 umstellen.


    Ich hatte dort nur unterschiedliche Werte zum Testen.
    Ich frage ab ob der aktuelle Wert (Breite) kleiner als der Zielwert ist.
    wenn ja ==> Betätigung Pfeiltaste rechts, Regler wandert eine Stufe höher
    wenn nein ==> Betätigung Pfeiltaste links, Regler wandert eine Stufe tiefer
    und Schleife wird nochmal durchlaufen mit Prüfung am Beginn der Schleife ob gewünschte Einstellung erreicht, falls ja wird sofort die Schleife verlassen, "Übernehmen" und "OK" gedrückt.
    Die Bit-Einstellung passt Windows teilweise automatisch an, da zu bestimmten Auflösungen der Grafikadapter auch bestimmte Bit-Einstellungen erfordert. Macht auch Sinn, da man sich mit falschen Angaben einiges zerschießen könnte.

    Eigentlich sollte die Funktion auch sauber arbeiten, bei mir klappt das. Hast du auch die Größe korrekt eingegeben (Breite-Leerzeichen-x-Leerzeichen-Höhe) ?

    Edit:
    Achja, umstellen der Farbtiefe.
    Die gewünschte Farbtiefe in exakter Schreibweise eintragen ( 'Höchste (32 Bit)', 'Mittlere (16 Bit)' )
    Am besten vorher Auslesen mit

    [autoit]

    $tiefe = ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'GetCurrentSelection', '')
    ConsoleWrite($tiefe & @CRLF)

    [/autoit]


    Neu Setzen geht so:

    [autoit]

    $occur = ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'FindString', 'Höchste (32 Bit)')
    ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'SetCurrentSelection', $occur)

    [/autoit]
  • Greenhorn

    was ist das für ein tool? wenn ich es ausführe passiert gar nix ?!


    BugFix

    danke. bei mir daheim funktioniert es auch im office hat er aber schwierigkeiten gemacht nachdem ich auf 1280*1024 umgestellt habe. (richtig geschrieben da derselbe code woanders funktioniert=!) aber ich versuchs nochmal.

    bezüglich der Farbtiefe. Das sieht kompliziert aus :) bin doch noch ganz blauäugig ´*g*

    aber vielen dank erstmal


    Mal aber was anderes bugfix

    wenn ich meine aktuelle auflösung nicht abfragen würde sondern direkt in die eigenschaften von Anzeige geh und sag er soll den register auf X*Y (bzw das höchste) stellen - wie würde da der code aussehen?

    2) Du hast geschrieben " wenn ja dann wandert der Regkler eine Stufe höher" eine Stufe oder sind das mehrere ?

    3) der Code -

    If Number(StringLeft($txt, 4)) < Number(StringLeft($Zielwert2, 4)) Then

    Was besagt er genau ? Was für ein Number? Stringleft ?txt ist einfach nur eine variable? Und was sagt die 4 aus ?

    Sorry wenn ich so bescheuert frage. Aber ich bin so begeistert von dem hier und würde es gern verstehen.


    LG

    Anna

  • Hi,

    ist ein Kommandozeilen-Tool um die Bildschirmauflösung zu ändern.

    Code
    Example: VidChng.exe 800x600x24@75
      Sets the video resolution to 800x600, True Color, 75Hz refresh rate.

    Tippe in der Eingabeaufforderung mal '1365vidchng -h' ein (Konsole muss sich natürlich im Pfad der Datei befinden, oder Du gibst den ganzen Pfad an: 'C:\Dokumente ...\1365vidchng -h')

    Ist sehr hilfreich, kannst Du per Batch oder mit AutoIt starten ...


    Gruß
    Greenhorn


    • Offizieller Beitrag

    Hi Anna,

    also bei den Größeneinstellungen muß genau der Text stehen, der unter dem Schieberegler zu lesen ist (z.B. "1280 x 1024 Pixel"). Denn diesen Text lese ich bei jedem Schleifendurchlauf aus.

    Wegen der Farbtiefe: Die Werte stehen in einer Combobox.
    Auf nicht selbst erzeugte Controls greift man am besten mit ControlCommand zu. Wenn du in der Hilfe zu diesem Befehl nachschaust, findest du dort die möglichen Parameter für unterschiedliche Controls.
    In der Combobox geht es darum zuerst zu ermitteln, welche Position innerhalb der Comboliste der gewünschte Wert einnimmt.
    In der Parameterübersicht als occurence (Vorkommen) bezeichnet. Das passiert hier:
    $occur = ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'FindString', 'Höchste (32 Bit)')
    "$occur" enthält jetzt die Listen-Position von "Höchste (32 Bit)".
    Nun wird diese Position als aktuelle Auswahl gesetzt mit:
    ControlCommand('Eigenschaften von Anzeige', '', $cbFarbtiefe, 'SetCurrentSelection', $occur)

    Zitat

    wenn ich meine aktuelle auflösung nicht abfragen würde sondern direkt in die eigenschaften von Anzeige geh und sag er soll den register auf X*Y (bzw das höchste) stellen - wie würde da der code aussehen?

    Einfach solange
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    ausführen, bis
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    sich nicht mehr ändert.
    Probier mal selbst, wenn du nicht klarkommst, meld dich wieder.

    Zitat

    2) Du hast geschrieben " wenn ja dann wandert der Regkler eine Stufe höher" eine Stufe oder sind das mehrere ?


    Die Anzahl der Stufen hängt von der verwendeten Grafikkarte ab.

    Zitat

    3) der Code -
    If Number(StringLeft($txt, 4)) < Number(StringLeft($Zielwert2, 4)) Then
    Was besagt er genau ? Was für ein Number? Stringleft ?txt ist einfach nur eine variable? Und was sagt die 4 aus ?


    Du mußt die Funktion von innen nach außen lesen:
    StringLeft($txt, 4) ==> liefert von "$txt" die linken 4 Zeichen, z.B. von "800 x 600 Pixel" die "800 "
    4 Zeichen deshalb, weil die größtmöglichen Werte 4 Zeichen lang sind. Hier wird das Leerzeichen mit übernommen - das wird aber beim Wandeln in eine Zahl ignoriert.
    Das ist jetzt aber eine Zeichenkette. Und um beim numerischen Vergleich keine falschen Ergebnisse zu bekommen wird diese Zeichenkette in eine Zahl umgewandelt, in diesem Bsp.:
    Number("800 ") ==> liefert 800
    Dasselbe passiert auf der Zielwertseite, sodass der Vergleich lautet:
    If 800 < 1024 Then

  • danke dir für die erläuterung !

    ich habe nun folgendes geschrieben



    Allerdings habe ich nun folgendes Problem

    Bei den BITs reagiert er nicht. Ich habe extra 16 Bit eingegeben damit ich sehen kann das es sich ändert.

    Bei der Schleife hab ich auch extra LEFT angegeben um zu sehen was er macht.

    Dies funktioniert soweit. allerdings habe ich das gefühl das er die Schleife nicht verlässt?


    Kannst du mir da bitte helfen.


    Gruß

    Anna

  • Hallo Anna,

    du hast eine While Schleife eingebaut, dein Fehler ist dabei eigentlich nur folgender das die While Schleife nicht weiß wann sie sich beenden soll bzw. wann sie nicht mehr durchlaufen werden soll. Also musst du eine Abbruch Bedingung einbauen, ich habe mir mal dein Skript angeschaut, und würde vorschlagen, das du die Zielgröße als Abbruch nimmst.

    Ich hab dir mal ein Beispiel gemacht:

    Spoiler anzeigen
    [autoit]


    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 800
    Global $Height = 600

    [/autoit] [autoit][/autoit] [autoit]

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

    [/autoit] [autoit][/autoit] [autoit]

    ; Hier lese ich den derzeit aktuellen Wert ein
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

    [/autoit] [autoit][/autoit] [autoit]

    ; Deine While Schleife begann mit: While true, da true immer true ist, wird die Schleife immer durchlaufen
    ; In der $txt wird ja der aktuelle Wert gespeichert, also zum Beispiel: 1600 x 1050 Pixel
    ; nun baue ich mir meinen eigenen Wert indem ich sage, bitte diese Schleife nur durchlaufen wenn in $txt nicht
    ; 800 x 600 Pixel steht.

    [/autoit] [autoit][/autoit] [autoit]

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Noch ein Nachtrag, wenn man das Skript etwas erweitert, kann man auch prüfen lassen ob die Zielauflösung kleiner, größer oder gleich ist. Dann wird der Regler in die entsprechende Richtung geschoben.
    (Wegen meiner Änderung bzw. wie ich den ersten Wert da raushole bitte nicht steinigen :) )

    Spoiler anzeigen
    [autoit]


    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1680
    Global $Height = 1050

    [/autoit] [autoit][/autoit] [autoit]

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

    [/autoit] [autoit][/autoit] [autoit]

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))

    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    ;ansonsten schleife verlassen, wenn z. b. die grösse schon gleich ist
    Else
    ExitLoop
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (5. März 2008 um 09:59)

  • Hallo McPoldy


    dein erstes Beispiel funktioniert.

    Ich habe als Ziel 1280*1024 eingegeben und es klappt. Sowohl nobteook als auch Monitor.

    Wenn ich aber schon bereits eine größere Auflösung als 1280*1024 habe hängt er sich auf.

    Kann man da noch was einbauen?


    bzw einbauen .. wenn ich dein 2tes Script nehme funktioniert das auf dem notebook auch. Sprich er schaut ist es größer soll er es verkleinern ist es ´kleiner soll er den regler vergößern und gleich soll er nichts machen.

    Wenn ich das an meinem PC allerdings starte, bleibt er bei der Auflösung 1280*600 stehen.

    Kannst du mir sagen wieso ? Dies ist nur der fall wenn ich die Auflösung auf 800*600 einstelle und die auflösung auf 1280*1024 umstellen möchte.


    Gruß

    Anna

  • Ja, kann ich dir verraten: WEIL ICH FAUL BIN :D
    Nein im Ernst, ich prüfe nur auf den ersten Parameter nicht auf den zweiten, ich baue es gleich mal ein.


    EDIT: Bzw. baue was aus :pinch:

    habe mal das :
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    raus genommen, dann sollte es gehen :)

    Spoiler anzeigen
    [autoit]


    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1680
    Global $Height = 1050

    [/autoit] [autoit][/autoit] [autoit]

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

    [/autoit] [autoit][/autoit] [autoit]

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))

    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • hmm nee der bleibt da auch stehen.

    Versuch das mal bei dir bitte aber mit den zielwerten 1280*1024


    Gruß

    anna

  • jau, hast recht, nun aber :D

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1280
    Global $Height = 1024

    [/autoit] [autoit][/autoit] [autoit]

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

    [/autoit] [autoit][/autoit] [autoit]

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))
    $curHeight = Number(StringStripWS(_StringBetween($txt,'x','Pixel'),3))


    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    ElseIf $curWidth = $Width AND $curHeight > $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ElseIf $curWidth = $Width AND $curHeight < $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit] [autoit][/autoit] [autoit]

    If WinWaitActive("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?",5) = 1 Then
    ControlClick("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?", "Button2",1)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)
    EndIf

    [/autoit]

    [Edit]: Ich habe den Eintrag im Code nach Annas Posting (siehe unten) erweitert.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (6. März 2008 um 08:11)

  • hehe supi :)

    so faul bist du also doch gar nicht :D


    hmm auf den ersten blick scheint das zu funktionieren. vielen dank.

    ich werde es mal weiter verfolgen.


    eine kleine erweiterung wäre noch toll.

    Und zwar kommt manchmal noch die Meldung "Sie haben die Einstellungen neu konfiguriert. Möchten Sie diese einstellung beibehalten" JA / NEIn

    Kann ich da eine Schleife einbauen, Sprich "Wenn die Fehlermeldung kommt dann auf ja klicken" ansonten ignoieren?!


    Grüße anna

  • Jau geht auch, unter den letzten ContrlClick folgendes rein:

    If WinWaitActive('','Sie haben die Einstellungen neu konfiguriert. Möchten Sie diese einstellung beibehalten',5) = 1 Then ControlClick('','Sie haben die Einstellungen neu konfiguriert. Möchten Sie diese einstellung beibehalten','','left',1)

    Bitte noch ergänzen, da bei mir grade die Abfrage nicht komme :( es muss noch die ContollID vom Ja Button rein.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ja genau WinWaint war es. Danke hab es verfolgständigt. Funktioniert soweit

    SQL
    If WinWaitActive("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?",5) = 1 Then 
    ControlClick("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?", "Button2",1)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)
    EndIf


    Frage McPoldy ( Ps bist du lukas fan ??? :D ) wieso hast du am Anfang <string.au3> ? ist das eine art Bibiothek??


    Gruß anna