Programmfenster Popup sporadisch, wie abfangen?

  • Tach zusammen.

    Erstmal ein Lob an die autoit-Community. :thumbup:

    Ich bin seit kurzem damit beschäftigt mir mit auoit ein paar Scripte zu schreiben.

    Zum Problem:
    Ich habe ein Programm geschrieben womit eine Anwendung auf dem PC gestartet wird und einige Befehle für mich abarbeitet.
    Leider taucht hin und wieder ein Werbefenster im Vordergrund auf, was ich automatisch geschlossen haben möchte, sonst läuft mein Script nicht weiter.

    Die Frage: wie frage ich sowas während der ganzen Procedur ab? Wie gesagt kommt dieses Fenster nicht immer. Also muß mein Script solange weiterlaufen, bis dieses eine Fenster auftaucht. Wenns auftaucht, so soll das Fenster geschlossen werden und das Script fortgeführt werden.

    Danke vorerst für eure Hilfe

  • Hi,
    was ist das für ein Werbefenster?

    Wenns ein wirkliches eigenes Programm ist (was ich mir irgendwie nicht vorstellen kann) dann hat es wahrscheinlich einen konstanten Titel.

    [autoit]

    While 1
    Sleep(100)
    If WinExists("Titel") Then WinClose("Titel")
    WEnd

    [/autoit]
  • Hi, danke für die Hilfe.

    Das ist ein Werbefenster von dem Programm welches mein Script startet.

    Wie baue ich das jetzt ein? Muß mein Script in die while Schleife?

    gruß proton

  • Das habe ich schon gemacht. Den Titel und den "schließen" button Zeigt er mir an (die Infos darüber).

    mir fehlen die Kenntnisse wie ich diese Überprüfung in mein Script implementiere, das es immer abgefragt wird, ob dieses Fenster auftaucht oder nicht.

    • Offizieller Beitrag

    Wenn Du den Titel des Fensters kennst, dann sollte das Script von Anno2008 doch funktionieren.
    Alternativ dazu könntest Du die If...Then Abfrage auch in eine Funktion packen und per AdlibEnable zeitgesteuert aufrufen.

    Aber ohne das konkrete Script zu kennen, kann Dir da niemand viel weiterhelfen. Wenn Du also bei der Umsetzung des Befehls Probleme hast, dann wirst Du uns schon mal Dein Script zeigen müssen.

  • Hi,
    ich muss Oscar natürlich recht geben, Wenn das Script net bekannt ist kann sich auch keiner was vorstellen. Es sollte aber sowieso schwierig werden ein Fenster zu schließen, welches net immer an der selben Stelle aufgerufen wird. Der Scriptteil "WinExists" läuft ja in einer Schleife in deinem Script. Wenn jetzt aber das Script auf Rückgabewerte des Programms wartet und diese net kommen weil das Werbefenster offen ist, wird das nix.
    Um welches Programm handelt es sich denn? Kann man die Werbung net ausblenden?

    MfG
    Der_Doc

  • Hi,
    ich muss Oscar natürlich recht geben, Wenn das Script net bekannt ist kann sich auch keiner was vorstellen. Es sollte aber sowieso schwierig werden ein Fenster zu schließen, welches net immer an der selben Stelle aufgerufen wird. Der Scriptteil "WinExists" läuft ja in einer Schleife in deinem Script. Wenn jetzt aber das Script auf Rückgabewerte des Programms wartet und diese net kommen weil das Werbefenster offen ist, wird das nix.
    Um welches Programm handelt es sich denn? Kann man die Werbung net ausblenden?

    MfG
    Der_Doc

    Danke für die Hilfe. Genau das ist das Proplem. Man weiß ja nicht genau wann das Fenster erscheint.
    Nehmt es bitte nicht übel aber das Programm verrat ich nicht aus bestimmten Gründen ;) , die Werbung kann man nicht ausschalten. evtl. über die Registry aber da habe ich noch weniger Ahnung von.

  • du machst ein extra script:

    [autoit]

    While 1
    Sleep(100)
    If WinExists("Titel") Then WinClose("Titel")
    WEnd

    [/autoit]


    und compilierst dies z.b. zu KillWerbung.exe

    in das Hauptscript schreibst am Anfang

    [autoit]

    Run(@ScriptDir & "\KillWerbung.exe")

    [/autoit]


    und am Ende

    [autoit]

    ProcessClose("KillWerbung.exe")

    [/autoit]

    KillWerbung.exe läuft somit gleichzeitig zu deinem Script und schließt das Werbefenster, falls es auftauchen sollte...

    lgE

  • danke eukalyptus :)

    das ist ne super idee, einfach aber genial.
    das wird mein problem wohl lösen.

    werde es mal ausprobieren.

  • Hallo,

    wie von eukalyptus vorgeschlagen, habe ich es so programmiert...und es funktioniert.

    Dankesehr.