Ich weis nicht wie ich Controlclick anwenden muss

  • Hallo,
    ich verzweifle an dem Controlclick Befehl, er funktioniert einfach nicht.
    Kann mit jemand sagen was ich falsch gemacht habe?


    [autoit]

    run("C:\Program Files\CCleaner\CCleaner64.exe")winwaitactive("Piriform CCleaner")ControlClick("Piriform CCleaner", "Sta&rte CCleaner", "Button2")

    [/autoit]
  • Hi,
    der Controlclick-Befehl funktioniert einwandfrei...
    Definitiv liegt es nicht am ControlClick(), sondern an dem, der diesen Befehl nicht richtig anwendet!

    Zitat

    Kann mit jemand sagen was ich falsch gemacht habe?

    Wie jetzt, also gehst du doch davon aus, dass DU den Fehler verursachst?! Wieso schreibst du das dann nicht so in die Überschrift zum Thread anstatt den Programmierern von AutoIt "die Schuld" zuzuschieben? ?(

    Schau dir mal die Parameter genauer an, und nimm den "Advanced Class" als Parameter ;)

    [autoit]

    ControlClick("Piriform CCleaner", "", "CLASS:Button; INSTANCE:2")

    [/autoit]


    dann noch (siehe Hilfe) den Button (links/rechts) und die Anzahl der Klicks uswusf

  • Die eckigen Klammern in der Hilfe zeigen an, das diese(r) Parameter optional sind/ist (= weggelassen werden können/kann). Die Klammern sollten dabei nicht übernommen werden.

  • Achso ok, und noch was, kann sein das WinWaitActive nicht tut? Weil wenn ich WinWaitActive("Titel") eingebe und starte passiert nichts, gebe ich statt dessen sleep(...) ein dann funktioniert der darauffolgende Befehl

  • Hi,
    schön, dass du den Threadtitel geändert hast^^ jetzt hagelt es Hilfen, jede Wette :thumbup:

    Zitat

    Achso ok, und noch was, kann sein das WinWaitActive nicht tut? Weil wenn ich WinWaitActive("Titel") eingebe und starte passiert nichts, gebe ich statt dessen sleep(...) ein dann funktioniert der darauffolgende Befehl

    Ja, ein Sleep() ist nie verkehrt! Ich wähle je nach Fenstertyp und Anwendung bis zu 2 Sekunden!!!
    Das Problem an Windows ist, dass es völlig Eventbasiert ist! So kann es sein, dass zwar die Information "Fenster aktiv" abgefeuert wurde, aber diese Information noch nicht in den entsprechenden Listen enthalten ist (oder das Fenster ist bei weitem noch nicht so weit...).
    Wenn du dann "zu früh" den Befehl "Drück den Button" gibst....dann hat Windows sich mal wieder selbst überholt, das ist an der Tagesordnung!
    Also entweder Wartezeiten einplanen (mit Sleep() geht das am einfachsten) oder mehrfach und ggf. mit verschiedenen Funktionen Ereignisse abfragen (kritisch s. o.)

  • Hallo Exotic,

    der ControlClick funktioniert gut. In deinem Fall wäre das:

    [autoit]

    ControlClick("Piriform CCleaner", "Sta&rte CCleaner", "Button2")

    [/autoit]

    Der WinwaitActive funktioniert bei mir auch. Bei diesem Befehl wartet das Script bis das Fenster aktiv ist. Mir hat meistens ein normales WinWait gereicht, damit weis man das das Programm geöffnet ist. Wenn du warten willst bis es aktiv ist, würde ich eher empfehlen mit WinActivate und WinWait zu arbeiten. Als Beispiel:

    [autoit]

    WinWait("Piriform CCleaner")
    WinActivate("Piriform CCleaner")

    [/autoit]

    EDIT:
    Achso, das schöne an controlclick ist, das du das Fenster wenn du es wolltest auch noch verstecken könntest und controlclick würde trotzdem funktionieren. Das liegt daran das du Autoit direkt sagst welches Fenster von dir gemeint ist.

    Deshalb wäre mein Ablauf run -> winwait -> controlclick

    Grüsse
    AyKay

  • Moin!

    Viel eleganter und vor allem sauberer läßt sich CCleaner über die command-line steuern.
    Hier findest du eine liste der verfügbaren Parameter: CCleaner command-line parameters

    Um zum Beispiel CCleaner im Hintergrund mit den voreingestellen Optionen auszuführen, genügt folgender Befehl:

    [autoit]

    ShellExecute("~Dein Installations Pfad~\CCleaner.exe", "/AUTO")

    [/autoit]


    Falls du mehrere Aktionen ausführen willst, solltest du diese Zeile benutzen:

    [autoit]

    ShellExecuteWait("~Dein Installations Pfad~\CCleaner.exe", "/AUTO")

    [/autoit]


    Sanfte Grüße :D

  • Hallo Exotic,

    der ControlClick funktioniert gut. In deinem Fall wäre das:

    [autoit]

    ControlClick("Piriform CCleaner", "Sta&rte CCleaner", "Button2")

    [/autoit]

    Doch diese Zeile funktioniert bei mir nicht, CCleaner will einfach nicht starten

  • Danke jetzt hab ich es hinbekommen!! :P

  • Danke jetzt hab ich es hinbekommen!! :P


    Dann markiere bitte den Thread als gelöst - 1. Beitrag bearbeiten -> Präfix auf "gelöst" setzen ;)

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski