Windows 7 Button Schimmert / Flackert / wechselt die Farbe

  • Ich möchte gern eine optische Feinheit richten.
    Ich hab ne einfache GUI mit 5 Buttons - jeder macht was anderes...
    Der Urzustand: Bei Start unter Windows 7 sind alle Buttons grau (default) und werden beim Drüberfahren mit der Mouse bläulich (auch per default). So weit - so gut...

    Der Aktivzustand: Wenn ich unter Windows 7 einen der Buttons drücke, fängt er an von allein Grau -> hellblau -> wieder grau -> usw. zu werden.
    Dieser Effekt gefällt mir solange der Button einen aktiven Prozess anzeigt.

    Wenn ich aber einen der anderen Buttons drücke, hat mein zuerst in meinem Beispiel gedrückter Button keine Funktion mehr - dennoch wechselt er immer noch die Farbe, als wäre er noch aktiv. Wie kann ich gezielt einzelne Button wieder in den Urzustand bringen.

  • Da wir, wie i2c schon angedeutet hat, keinen Code haben können wir nur spekulieren, also entschuldige mich fals es nicht das ist was du gesucht hast.

    Zitat von card0384

    Wie kann ich gezielt einzelne Button wieder in den Urzustand bringen.

    Ich würde die Button IDs alle in ein Array schreiben, damit kannst du es am besten kontrollieren.

    Zitat von card0384

    Wenn ich aber einen der anderen Buttons drücke, hat mein zuerst in meinem Beispiel gedrückter Button keine Funktion mehr - dennoch wechselt er immer noch die Farbe, als wäre er noch aktiv.

    Dann hast du wohl irg was gemacht was es dazu bringt, evtl überprüfst du Variablen (z.B. If $BTN1_An = True Then ****) oder du legst ein AdLibRegister fest, was du dann vergisst wieder auszuschalten.

    ich hoffe eins dieser Dinge hilft dir.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • ok - sorry - sorry - ich dachte, mein Problem geht auch ohne Script aus der Erklärung hervor...

    Es scheint dennoch - mein Script ist doch etwas größer - irgendwo im Script ein Fehler zuliegen.

    Daher formuliere ich meine Frage um, um eine entsprechende Lösung zu bekommen. Hier mein Bsp.-Script:

    [autoit]

    GUICreate("",700,700)
    GUISetState()

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

    $i1 = GUICtrlCreateButton("Test1", 20, 20, 100, 30)
    $i2 = GUICtrlCreateButton("Test2", 20, 60, 100, 30)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ich drücke Button $i1. Der Button beginnt in Windows 7 selbstständig seine Farbe zu drehen - er scheint also eine aktive Funktion aus Usersicht auszuführen.
    Wie bekomm ich, ohne etwas anderes zu drücken, das Farbspiel wieder weg?

  • Da mir das Beispiel nicht mehr gebracht als ich vorher wusste, Frag ich mal:

    Zitat von card0384

    Wie bekomm ich, ohne etwas anderes zu drücken, das Farbspiel wieder weg?

    Das kommt drauf an unter welcher Bedingung du das machen willst, nach 1 Minute, nach einer bestimmten Ausführung oder durch Zufall. Da wird aber immernoch nicht wissen wie du das mit dem Blinken machst, können wir dir auch nicht helfen zu sagen wie man es beendet.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Wenn du mein Beispiel-Script unter Windows 7 ausführst und den Button drückst - siehst du, daß der Button nach dem Drücken so verschiedenfarbig (von grau nach hellblau/türkis und wieder zu grau usw.)vor sich hin leuchtet. Ich sprech hierbei NICHT vom Blau werden des Buttons, wenn ich mit der Maus drüber fahre.
    Ich selbst mach mit dem Button nichts - mein Script ist nicht der Verursacher des Farbspieles, das wird wohl von Windows AERO oder so kommen...
    Unter welchen Bedingungen ich das Farbspiel wieder weg haben will ist vollkommen egal, mir kommt es auf den Befehl an, der dem Button explizit sagt "Leuchte vor dich hin" oder "leuchte nicht mehr"
    Aber wenn ich es dir einfacher machen kann - sagen wir nach einem sleep von 30sek. soll das Farbspiel von allein wieder verschwinden...

    • Offizieller Beitrag

    Dein Script zeigt das Verhalten bei mir nicht, egal in welcher Version von Win7.
    Wenn dir aber das geleuchte auf den Zeiger geht, dann setze den Eingabefocus auf irgendein anderes Control als die Buttons.
    Schau dir mal ControlFocus an.

  • Raupi : Bei Win7 Aero ist die Farbe eines fokussierten Buttons nicht statisch. Dei Intensität der Markierung wird sinusförmig geändert. Das fällt aber nur auf, wenn man sehr genau hinschaut finde ich.

    • Offizieller Beitrag
    Zitat von progandy

    Raupi : Bei Win7 Aero ist die Farbe eines fokussierten Buttons nicht statisch. Dei Intensität der Markierung wird sinusförmig geändert. Das fällt aber nur auf, wenn man sehr genau hinschaut finde ich.

    Also bei mir ist nichts mit sinusförmiger Farbänderung. Die Buttons haben im fokusierten Zustand eine Farbe, und es ändert sich nix.
    Der Effekt ist mir bei Buttons ausgefallen, die mit einer Imageliste gefüttert werden, aber sonst nicht.
    MSDN schweigt sich auch aus, ob man den Blinkeffekt ausschalten kann.

  • prima, daß ich nicht der einzige mit dem Farbspiel bin - in meinem eigenen Script hab ich noch viel größere Buttons, da fällt es natürlich auch mehr auf.
    Mein Problem, wenn ein Button gedrückt wird, dann disable ich den Button und gebe im rechten GUI-Bereich etwas aus (ein shell.explorer.2-Objekt) - daran erkennt der Anwender, was da grad rechts dargestellt wird. Drück ich nun einen anderen Button, wird dieser disabled, der ursprüngliche wird wieder enabled - und hier ist das Problem, der flackert nach enablen genauso aktiv (sinusfarbe) weiter.
    Ich vermute, daß ein Controlsend() da was bewirkt, aber wenn sich selbst MSDN ausschweigt :S
    Ideen: kann man mit spy++ o.ä. die Zustandsänderung definieren (um sie dann in ein controlsend umzuwandlen)? Ich hab da noch nichts gefunden - gibts da noch andere "objekt"-sniffer, die da Unterschiede darstellen können? Ich denke da z.B. auch daran, daß die Buttons beim Mouse-Over sich ohne Sinus-Effekt auch z.B. blau-türkis einfärben...