Neuling will Hotspot austricksen

  • Also folgendes Problem:
    Ich wohne in einem Hotel und muss daher immer über den Freehotspot ins Internet. Das Internet bricht aber alle 60 Minuten ab und man muss es wieder aktivieren. Wenn ich etwas herunter laden will ist das doof weil ich dann alle 60 min. an den PC muss.
    Was ich Automatisieren will:
    Nach Skriptstart möchte ich das mein Skript den Browser öffnet und nach einer Minute Überprüft ob meine Startseite (Google.de) oder die Startseite des Hotspot angezeigt wird. Bei Googel soll die seite wieder geschlossen werden. Bei Hotspot soll auf eine Schaltfläche geklickt werden und nach 30 sec. auf eine Weitere (um mich an zu melden). Dann soll das Fenster geschlossen werden und das ganze soll alle 10 Minuten wiederholt werden.
    Habe heute erst angefangen damit und mich Probiert aber wie erwartet kommt nichts bei raus.
    Was ich so zusammen gebastelt habe:

    [autoit]


    While 1
    BlockInput(1)
    AutoItSetOption("MouseCoordMode", 0)
    run("firefox.exe")
    Sleep(60000)
    If WinExists (google - Mozilla Firefox) Then MouseClick("left", 1342, 5, 1)
    If Not WinExists (google - Mozilla Firefox) Then MouseClick("left", 468, 621, 1)
    Sleep (30000)
    MouseClick("left", 650, 497, 1)
    Sleep (5000)
    MouseClick("left", 1342, 5, 1)
    BlockInput(0)
    Sleep(600000)
    EndIf
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von Amarey (18. September 2012 um 21:56)

  • Und wo ist deine Frage?^^

    Und du musst dafür nicht unbedingt Google ansteuern,

    [autoit]

    Ping()

    [/autoit]

    hilft da ;)...

    Sonst erleichtert dir die FF.au3 vllt. auch das Leben, ist für Website-Automatisierungen, aber wir sehen ja nicht, welchen Button du drücken musst UND ich habe keine Ahnung, was dein Problem ist^^...

    "Es kommt nichts bei raus" ist eine eher schlechte Fehlerbeschreibung ;)...!

    Und übrigens:

    [autoit]

    If WinExists (google - Mozilla Firefox) Then MouseClick("left", 1342, 5, 1)
    If Not WinExists (google - Mozilla Firefox) Then MouseClick("left", 468, 621, 1)

    [/autoit]

    ist besser so:

    [autoit]

    If WinExists("Google") Then
    MouseClick("left", 1342, 5, 1)
    Else
    MouseClick("left", 468, 621, 1)
    EndIf

    [/autoit]

    Und wichtig dabei ist auch, dass der Parameter in Anführungsstriche muss! Sonst wird es nicht als String erkannt...

    Und pack dir noch ein

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    vor den Code ;)... Siehst in der Hilfe, warum^^!


    LG,
    Aca

  • Ob es mit Ping() auch geht ist aber nicht sicher. Es gibt Hotspots die so blöd sind und Pings trotzdem durchlassen. Aber das findest du ja relativ schnell heraus. Und ich würde auch die ganze Anmelde-Rumklickerei im Else von Acanis machen. (Gute Beschreibung übrigens ;) ) Ausserdem würde ich zur Sicherheit noch WinActivate einbauen.

    Gruss Shadowigor

  • Spoiler anzeigen

    @ Acanis:
    Genauere Beschreibungen bringe ich heute Nachmittag nach der Arbeit ;) Aber danke schon mal! Ich habe deinen Vorschlag eingebaut und anscheinend funktioniert es :) Teste es aber später noch genauer!
    Ping funktionier nicht unser Hotspot ist zu doof so ist mir das sicherer!

    @ Shadowigor Was bringt mir das WinActivate hier? Habe gestern erst angefangen und die ganzen befehle noch nicht durch ;)

    Ein Problem habe ich noch:
    Wenn ich jetzt auf Compile drücke kommt eine Fehlermeldung: " Error: Error opening the destination file." !?

    Danke schon mal für die Hilfe!

  • Hi,

    wirst du nicht auf jeden Fall ausgeloggt, unabhängig, ob du Webseiten anpingst oder Sachen runterlädst (Traffic erzeugst)?

    Da bringt dir so ein Tool quasi gar nix, weil der DL sowieso abbrechen wird :)

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Das ding bei der Geschichte ist das ich mit meinem Handy über Team Viewer den Download jederzeit wieder starten kann. nur muss ich dazu mit dem Internet verbunden sein ;) Später denke ich werde ich noch mal schauen das auch der Download automatisch wieder Reaktiviert wird aber das kommt wann anders ;)

    Das Script an sich tut jetzt was es soll außer das es sich nicht wiederholt. Hätte gerne eine schleife das es sich alle 10 minuten wiederholt.
    Dachte das hätte ich mit

    [autoit]

    While 1
    (...)
    Wend

    [/autoit]


    geregelt..

    Also wie kann ich da jetzt eine Schleife erzeugen die auch funktioniert?
    Mfg

  • [autoit]

    While Sleep(10 * 60 * 1000)
    ; Code
    WEnd

    [/autoit]


    LG,
    Aca

    Werde ich gleich mal ändern... wo für steht die 10 die 60 und die 1000 ?
    LG und vielen dank für die tolle Hilfe!

  • [autoit]

    While Sleep(10 * 60 * 1000)
    ; Code
    WEnd

    [/autoit]


    LG,
    Aca


    das könntest du noch mit variabeln machen um später evtl über ne gui das einzustellen

    [autoit]


    $time = 10 ;zeit in minuten

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

    While Sleep($time * 60 * 1000)
    ; Code
    WEnd

    [/autoit]

    PS: übrigens kann man mit einem semikolon ( ; ) ausklammern, also um zb ein befehl für den leser zu beschreiben

  • Zitat

    wo für steht die 10 die 60 und die 1000 ?


    Die Funktion Sleep erwartet die zu "schlafende" Zeit in Millisekunden.
    Eine Sekunde hat 1000 Millisekunden, eine Minute 60 Sekunden.
    Folglich:
    Warte 60 mal 1 Sekunde (1000 Millisekunden), sprich eine Minute.
    Wenn man das jetzt noch mit "n" multipliziert,
    so hat man "n" Minuten, die das Skript pausiert wird.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Danke Danke Danke! Also das Script läuft so ganz gut :)
    Könntet ihr aber bitte trotzdem noch einmal drüber schauen und sagen was ihr vielleicht ändern würdet b.z.w. was noch falsch ist?

    [autoit]

    ; Script Start - Add your code below here
    Opt("WinTitleMatchMode", 2)
    While Sleep(10 * 60 * 1000)
    BlockInput(1)
    AutoItSetOption("MouseCoordMode", 0)
    run("firefox.exe")
    Sleep(30000)
    If WinExists("Google") Then
    MouseClick("left", 1342, 5, 1)
    Else
    MouseClick("left", 450, 616, 1)
    Sleep (30000)
    MouseClick("left", 704, 509, 1)
    Sleep (5000)
    MouseClick("left", 1342, 5, 1)
    BlockInput(0)
    EndIf
    WEnd

    [/autoit]
  • Einrücken zur Übersichtlichkeit ;)...
    Sleep-Befehle zum Verständnis immer so aufbauen -> Sleep(4000) -> Sleep(4 * 1000)

    Du kannst die "1" bei MousClick() weg lassen, da das der Default-Parameter ist.

    Du könntest anstatt Koordinaten die FF.au3 nutzen und die Button halt "eleganter" ansteuern.

    Außerdem, wie gesagt, könntest du mit

    [autoit]

    Ping()

    [/autoit]

    checken, ob die Verbindung noch steht.

    Du startest jetzt immer wieder den FireFox?! Hast du es dann nicht auch mehrfach offen?^^

    Sonst Leerzeilen zur Übersichtlichkeit und

    [autoit]

    AutoItSetOption("MouseCoordMode", 0)

    [/autoit]


    genauso wie Opt() an den Anfang des Scriptes.

    Sind halt so Kleinigkeiten, die mir auffallen^^. Aber ist halt auch nur ein Mini-Script und man muss vllt. nicht so auf sowas achten, aber bei längeren ist das NOTWENDIG und sollte man sich direkt angewöhnen :).

    LG,
    Aca

  • Vielen dank :) Ping geht leider nicht! Wäre natürlich um einiges einfacher... Teil meines Scriptes ist es natürlich auch Firefox wieder zu schließen... Das Firefox ständig geöffnet wird stört nicht da ich es nur benutze wenn ich nicht am PC bin ;)

    Was genau ist eine FF.au3 ?
    Nehme an ein neues Script in dem die Koordinaten festgehalten sind?

    Danke :) Wie kann ich den eigentlich hier "Gelöst" angeben?

    Überarbeitet:

    Spoiler anzeigen
    [autoit]


    Opt("WinTitleMatchMode", 2)
    AutoItSetOption("MouseCoordMode", 0)
    While Sleep(10 * 60 * 1000)
    BlockInput(1)
    run("firefox.exe")
    Sleep(20*1000)
    If WinExists("Google") Then
    MouseClick("left", 1342, 5,)
    Else
    MouseClick("left", 450, 616,)
    Sleep (20*1000)
    MouseClick("left", 704, 509,)
    Sleep (5*1000)
    MouseClick("left", 1342, 5,)
    BlockInput(0)
    EndIf
    WEnd

    [/autoit]
  • So würd ichs machen, du hattest noch Fehler drin.

    [autoit]

    Opt("WinTitleMatchMode", 2)
    AutoItSetOption("MouseCoordMode", 0)

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

    While Sleep(10 * 60 * 1000)
    BlockInput(1)
    Run("firefox.exe")

    If Sleep(20 * 1000) And WinExists("Google") Then
    MouseClick("left", 1342, 5)
    Else
    MouseClick("left", 450, 616)
    Sleep (20 * 1000)
    MouseClick("left", 704, 509)
    Sleep (5 * 1000)
    MouseClick("left", 1342, 5)
    BlockInput(0)
    EndIf
    WEnd

    [/autoit]

    Aber ne Frage, sind die letzten Befehle um den FF zu schließen? Dann wird er nur geschlossen, wenn Google nicht gefunden wurde?!
    Und auch BlockInput wird nur aufgehoben, wenn die Verbindung NICHT mehr da war...

    Ist das denn so gewollt? Warum hast du BlockInput denn drin? Du bist ja auch nicht am Rechner, oder?!^^

    Evtl. würde ich mit

    [autoit]

    HotKeySet()

    [/autoit]

    noch Start/Stop-Funktionen machen.


    Und die FF.au3 siehste in dem Bereich: http://www.autoit.de/index.php?page=Board&boardID=32
    Das ist eine UDF(sind also Funktionen) um FireFox zu steuern. Damit könntest du z.B. alles unsichtbar im Hintergrund machen und DIREKT OHNE Koordinaten Button ansteuern, den FireFox schließen/öffnen, etc...

    Und wenn deine letzten Mausklicks echt das Schließen des FF sind, ann kannste auch

    [autoit]

    ProcessClose()

    [/autoit]

    z.B. nutzen^^.


    LG,
    Aca

  • @ Acanis! Sieht gut aus :) geschlossen wird er bei beiden. erkläre dir kurz sein Script :P Blockinput ist einfach nur so drin :P Save ist Save :P
    BlockInput(0) muss dann wohl nach EndIf?

    [autoit]


    Opt("WinTitleMatchMode", 2)
    AutoItSetOption("MouseCoordMode", 0)

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

    While Sleep(10 * 60 * 1000)
    BlockInput(1)
    Run("firefox.exe")

    If Sleep(20 * 1000) And WinExists("Google") Then
    MouseClick("left", 1342, 5) ;---------> Schließt FF wenn Google erscheint
    Else
    MouseClick("left", 450, 616) ;---------> Klickt den ersten Button zur Anmeldung
    Sleep (20 * 1000)
    MouseClick("left", 704, 509) ;---------> Klickt den zweiten Button zur Anmeldung
    Sleep (5 * 1000)
    MouseClick("left", 1342, 5) ;---------> schließt FF nach der Anmeldung
    BlockInput(0)
    EndIf
    WEnd

    [/autoit]

    Warum hast du den 10 min Sleep nach dem If gesetzt?
    Eine FF.au3 einzubauen sieht ziemlich anstengend aus :P

    Einmal editiert, zuletzt von Amarey (19. September 2012 um 20:41)

  • Hey,

    kommt drauf an, wann du BlockInput aktiv haben möchtest...^^ Aber so ist es etwas komisch. Wenn du es nach dem If-Teil machst, dann ist, während das Script "arbeitet"(= nicht pausiert), der Input geblockt... Das wirst du wohl wollen?!^^

    Warum habe ich das Sleep da mit rein getan?^^

    Es werden zuerst die Funktionen ausgeführt, die da sind, also Sleep() und WinExists(), dann werden die Ergebnisse überprüft.
    In AutoIt ist alles, was nicht "0" ist = "1"(True). Also ist Sleep() immer = True. Damit wird deine If-Abfrage nicht verändert, aber du sparst eine Zeile.
    Ist keine wichtige oder dolle Änderung, aber ich fand es so hübscher :P... Fand es "unschön", vom Code her, dass da noch ein Sleep war xD...

    Und die FF.au3 ist sehr sehr simpel, wäre halt ne Möglichkeit, das noch zu verbessern und ohne Koordinaten zu machen. Aber ist nur ein Vorschlag...^^ Ist halt die Frage, in wie weit du AutoIt lernen willst und in wie weit du "Lust" hast, das Script zu "optimieren" :).


    LG,
    Aca

  • Ich verstehe :) will das auf jeden fall lernen :) wollte schon immer mal sowas können und dannach kommt dann html :D das dauert aber noch ne weile :P
    In FF lese ich mich morgen rein und versuche mich daran :)
    Wäre halt echt hübsch ohne die ******* koordinaten :)
    Danke noch mal für deine großzügige hilfe und natürlich auch danke an alle anderen :)

    Habe den blockinput jetzt nach dem if gesetzt :)


    Edit BugFix: Ausdruck entfernt. Bitte Umgangsformen beachten!

    2 Mal editiert, zuletzt von BugFix (20. September 2012 um 16:00)