1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. cdn123

Beiträge von cdn123

  • Fenster schließen falls es kommt

    • cdn123
    • 10. Mai 2016 um 22:09

    Ach besten Dank! Klappt soweit alles. Super!!

    Noch eine kleine Frage: Am Ende der Installation wird der Button Beenden klickbar. Gerne würde ich diesen dann auch direkt klicken. Habe mit dem WindowsInfo alles soweit rausbekommen aber irgendwo scheitert es noch am Skript:

    AutoIt
    While 1
       If ControlCommand("Fenster1", "" ,"[CLASS:Button; INSTANCE:3]", "IsEnabled", "") Then
    	  WinActivate("Fenster1")
    	  Send("{B}")
    	  ExitLoop
       EndIf
        Sleep(100)
    WEnd

    Seht ihr da direkt den Fehler? :)

    Erledigt. War der falsche Button. Oweia, ist schon zu spät.

  • Fenster schließen falls es kommt

    • cdn123
    • 10. Mai 2016 um 21:07

    Sorry aber bin wirklich noch ganz frisch

  • Fenster schließen falls es kommt

    • cdn123
    • 10. Mai 2016 um 20:47

    Wow besten Dank für den Code. Nur muss sagen so richtig verstehe ich diesen nicht. Habe mir in Zwischenzeit was neues gebastelt nur irgendwo hapert es noch dran vielleicht könnt ihr mir sagen warum der Rückgabewert immer 0 ist ?! Fände die Lösung sonst sehr elegant weil Sie sehr gut zu meinem programm passt:

    AutoIt
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Opt("WinTitleMatchMode", 3)
    EndFunc
    
    
    Func _WinWaitActivate($title,$text,$timeout=0)
        WinWait($title,$text,$timeout)
        If Not WinActive($title,$text) Then WinActivate($title,$text)
        WinWaitActive($title,$text,$timeout)
    EndFunc
    
    
    _AU3RecordSetup()
    #endregion --- Internal functions End ---
    
    
    Run('test.exe')
    _WinWaitActivate("Fenster 1","", 60)
    Send("{ENTER}")
    
    
    $lw = _WinWaitActivate("Fenster 2","", 5)
    If $lw = 1 Then
       Send("{TAB}{ENTER}")
    Else
        MsgBox(0, "Failure: Returns 0 if timeout occurred. ", $lw)
    EndIf
    
    
    
    
    _WinWaitActivate("Fenster 2","", 15)
    Send("{DOWN 10}{SPACE}{DOWN 3}{SPACE}{DOWN}{SPACE}{ENTER}")
    
    
    Opt("WinTitleMatchMode", 2)
    
    
    
    
    
    
    $sti = _WinWaitActivate("Fenster 3","", 40)
    If $sti = 1 Then
       WinClose("Fenster 3","")
    Else
        MsgBox(0, "2Failure: Returns 0 if timeout occurred. ", $sti)
    EndIf
    
    
    $st = _WinWaitActivate("Fenster 4","", 40)
    If $st = 1 Then
       WinClose("Fenster 4","")
    Else
        MsgBox(0, "Failure: Returns 0 if timeout occurred. ", $st)
    EndIf
    Alles anzeigen

    Wenn man das irgendwie zum laufen bringen könnte...

  • Fenster schließen falls es kommt

    • cdn123
    • 10. Mai 2016 um 20:09
    Zitat von Lottich

    Ja, mit der While-Schleife lässt sich das recht gut lösen.

    Hier mal ein Beispiel
    AutoIt
    While 1
    	If WinExists("Titel 1") Then WinClose("Titel 1")
    	If WinExists("Titel 2") Then WinClose("Titel 2")
    	If WinExists("Titel 3") Then WinClose("Titel 3")
    	If WinExists("Titel 4") Then WinClose("Titel 4")
    	Sleep(1000)	; lässt das Script 1 Sekunde pausieren um Prozessorauslastung zu minimieren,
    				; sonst würden die Abfragen permanent laufen.
    WEnd
    
    
    ; oder diese Variante
    
    
    Dim $Array_Titel[4] = ["Titel 1", "Titel 2", "Titel 3", "Titel 4"]
    While Sleep(1000)
    	For $i = 0 to UBound($Array_Titel) -1
    		If WinExists($Array_Titel[$i]) Then WinClose($Array_Titel[$i])
    	Next
    WEnd
    Alles anzeigen


    Allerdings solltest du bedenken, dass diese beiden Beispiele auch irgendwann beendet werden sollten. Wie das geschehen soll würde aber vom Zweck deines Vorhabens abhängen.

    MfG Lo..

    Besten Dank für die schnelle Antwort! Ja ich würde einen Timeout von 3 Minuten vorschlagen. Wenn alle Fenster vorher schon erscheinen, dann beendet sich die Schleife auch oder? Wie bringe ich den denn am besten hier ein?

    Eleganter wäre es gewesen mit WinWaitActivate (vom Recorder) und dem Timeout nur damit lassen sich ja leider keine If Bedingungen machen ...

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 20:04

    Danke für die schnelle Hilfe!

  • Fenster schließen falls es kommt

    • cdn123
    • 10. Mai 2016 um 19:42

    Hallo zusammen,

    eigentlich auch eine sehr einfache Frage nur ich drehe mich hier ein wenig im Kreis:

    Ich möchte bei Installation Falls sich ein bestimmtes Fenster öffnet, dass dieses geschlossen wird. WinExists alleine hilft mir da leider nicht, da ich nicht weiß wann genau das Fenster kommt. Dadrum eine while 1 schleife führt dann dazu dass das Skript niemals endet falls das Fenster sich nicht öffnet richtig?

    Habe bis jetzt folgendes:

    Code
    If WinExists("Fenster 1","") Then
       WinClose("Fenster 1","")
       If WinExists("Fenster 2","") Then ; Kommt sicher wenn Fenster 1 kommt
    	  WinClose("Fenster 2","")
       EndIf
    EndIf

    Bin für jede Hilfe dankbar :)

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 18:17

    Ach Fehler gefunden: Muss es als Admin ausführen.. Da der Setup auch als Admin ausgeführt werden muss!

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 18:12

    Habe ich schonv erscuht. Hilft leider nichts. Wenn ich das Programm mit Run starte und es kommt die Meldung ist das alles kein Problem....

    Aber die Zahl hat ja schon Sinn: Der soll nur die gegebene Zeit warten bis die Fenster erscheinen. Ansonsten soll er weiter im Skript machen.

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 18:00

    Ist ja jetzt ;)

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 17:54

    Richtig wird beim recorder erstellt. Hier das Ganze Skript:


    Code
    #region ---Au3Recorder generated code Start (v3.3.7.0)  ---
    
    
    #region --- Internal functions Au3Recorder Start  ---
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',250)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Opt("WinTitleMatchMode",2)
    EndFunc
    
    
    Func _WinWaitActivate($title,$text,$timeout=0)
        WinWait($title,$text,$timeout)
        If Not WinActive($title,$text) Then WinActivate($title,$text)
        WinWaitActive($title,$text,$timeout)
    EndFunc
    
    
    _AU3RecordSetup()
    #endregion --- Internal functions Au3Recorder End ---
    
    
    _WinWaitActivate("Servicetool Information","",75)
    Send("{TAB 3}{ENTER}")
    _WinWaitActivate("Servicetool V.","",3)
    Send("!+{F4}")
    
    
    Exit
    
    
    #endregion --- Au3Recorder generated code End ---
    Alles anzeigen

    Ist sogesehen Winwait ...Aber klappt ja leider nicht

  • Fenster schließen ohne Run

    • cdn123
    • 10. Mai 2016 um 17:33

    Hallo zusammen,

    bin noch relativ neu in AutoIT und stoße gerade auf ein Problem wo Google noch nicht mein Freund ist:

    Ich habe eine Installation die zwischendurch neu startet und dann nach dem Neustart automatisch weiter geht. Hier habe ich nun in AutoIT einen Eintrag in RunOnce gemacht um ein weiteres Skript auszuführen. Soweit so gut. Da der Setup nun von selber weitergeht habe ich in den Skript keinen Run Befehl. Nun möchte ich einfach nur, dass wenn eine bestimmtes Fenster erscheint dieses geschlossen wird. Dies klappt aber leider nicht. Das Skript stoppt einfach oder beendet sich sofort. Hier das Skript:

    Code
    _WinWaitActivate("Servicetool Information","",75)
    Send("{TAB 3}{ENTER}")
    _WinWaitActivate("Servicetool V.","",3)
    Send("!+{F4}")
    
    
    Exit

    Wäre super wenn hier jemand helfen kann. Ich weiß, dass ich auch WinClose verwenden könnte ;)

    Danke für Eure Hilfe!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™