Cleanerbot

  • Hallo leute, ich arbeite seid geraumer zeit immer mal mit AutoIt!
    Neulich kamm ein Kumpel zu mir und fragte mich ob ich ihm nicht einen Bot schreiben kann der nach dem schließen von Firefox den CCleaner öffnet und "aufräumt" habe ich gesagt na klar gucken wir mal was wir so zaubern können!
    So jetzt habe ich mich heute drann gesetzt und den Bot geschrieben nur irgendwie will der nicht^^

    Spoiler anzeigen


    Hotkeyset ("{ESC}" , "Ende")


    While 1
    If WinWaitClose ("C:\Program Files\Mozilla Firefox\firefox.exe", "", 5) Then
    Run ("C:\Program Files\CCleaner\CCleaner.exe")
    WinWaitActive ("C:\Program Files\CCleaner\CCleaner.exe")
    Mouseclick ("left", 583, 523, 1)
    Sleep (10000)
    Mouseclick ("left", 667, 11, 1)
    EndIf
    WEnd

    Func Ende()
    Exit
    EndFunc


    Der bot macht bis jetzt folgendes:
    wenn ich den starte über einen Hotkey der im Bot nicht geschrieben ist öffnet er den CCleaner auch wenn firefox offen ist und dann wars das auch schon.

    Habe ich evt eine falsche funktion verwendet?

    Einmal editiert, zuletzt von GoldenToy (29. August 2011 um 17:24)

  • Nimm die "5" am Ende weg. Das ist ein optionaler Parameter (Timeout in seconds). D.h. wenn Firefox in den nächsten 5 Sekunden nicht geschlossen wird wartet er nicht weiter ab.
    Das nächste Mal genauer schauen ;)
    Noch ein kleiner Tipp: Wenn CCleaner verschoben wird trifft der Mausklick nicht mehr. Arbeite lieber mit Tastenkombinationen, die das Programm hergibt oder Dem Controlclick (so heißt es glaub ich).
    Viel Erfolg, Aquaplant

    //Edit: Noch etwas, ich weiß nicht ob das WinWait mit dem Titel funktioniert. Du musst wahrscheinlich den "richtigen" Titel nehmen, also Mozilla Firefox. Dazu musst du noch die Option Wintitlematch (?) ändern, dass er nur einen Teil des Titels verlgeicht. Ansonsten brauchst du den exakten Titel.

    //Edit2:

    Spoiler anzeigen
    [autoit]

    Opt("WinTitleMatchMode", 2)

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

    WinWaitClose("Mozilla Firefox")
    ShellExecute("C:\Program Files\CCleaner\CCleaner64.exe")
    Do
    Sleep(10)
    WinActivate("CCleaner")
    Until WinActive("CCleaner")

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

    For $i = 0 To 7
    Send("{Tab}")
    Sleep(250)
    Next
    Send("{Space}")

    [/autoit]

    Einmal editiert, zuletzt von Aquaplant (28. August 2011 um 22:36)

  • Firefox hat genau dafür ein Addon, kannste ja mal googlen. Ich guck sonst morgen nachmittag wie das heißt :)

  • Guten Morgen,
    danke schonmal für die antworten ich muss gleich arbeiten ich gucke heute abend wieder rein.

  • Versuchs doch einfach mal so:

    [autoit]

    While ProcessExists('firefox.exe')
    Sleep(1)
    WEnd

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

    Run('C:\Program Files\CCleaner\ccleaner.exe /AUTO')

    [/autoit]


    MfG, James C.

  • So frisch von arbeit zuhause!
    Danke für eure Hilfe ich werde mir eure Hilfen und Hinweise einarbeiten und probieren

    Edit:
    Ich habe das Skrypt von James1337 genommen und noch ein Kotkeyset dazu gebaut funktioniert einwandfrei
    Danke euch für eure Hilfe!
    Für alle die es nochmal sehen wollen

    Spoiler anzeigen

    Hotkeyset ("{ESC}" , "Ende")

    While ProcessExists('firefox.exe')
    Sleep(1)
    WEnd

    Run('C:\Program Files\CCleaner\ccleaner.exe /AUTO')

    Func Ende()
    Exit
    EndFunc

    Einmal editiert, zuletzt von GoldenToy (29. August 2011 um 17:22)

  • Nur als kleine Anmerkung,

    ich würde die Mouseclick-Funktion aus deinem Script entfernen und mit den Button ID´s arbeiten.
    Du ließt die ID´s mit dem im Autoit integrierten Tool : AU3INFO aus und verwendest dann die Funktion ControlClick.

    Damit verhinderst du das dein Script bei anderen Monitoren und verschiedenen Auflösungen abschmiert.