Funktions Optimierung und 1 Fehler finden.

  • Hiho,

    Ich habe ein Script für die Arbeit geschrieben um Täglich 1 mal einen Berricht auszudrucken. Nun empfinde ich die Funktion irgendwie als unsauber. Habt ihr Verbesserungsvorschläge? Danke schonmal.

    Spoiler anzeigen
    [autoit]

    Func Autodrucken($programmpfad, $Programmtitel, $dateipfad, $Druckername)

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

    ShellExecute($programmpfad, "", "", "", @SW_MAXIMIZE)
    WinWait($Programmtitel)

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

    WinActivate($Programmtitel)
    WinWaitActive($Programmtitel)

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

    Send("^o")
    Sleep(1000)
    ;Send($datei1pfad)
    ControlSetText("Archiv öffnen ...", "", 1148, $dateipfad)
    Sleep(500)
    ControlClick("Archiv öffnen ...", "", "Button2")
    Sleep(1500)
    ;Send("{Enter}")
    While 1
    If WinActive("Archivübersicht:") Then
    $hComboBox = ControlGetHandle("Archivübersicht:", "", "ComboBox1")
    ControlCommand("Archivübersicht:", "", 1013, "showdropdown")
    Sleep(500)
    ControlCommand("Archivübersicht:", "", 1013, "SelectString", 'Täglich')
    Sleep(500)
    ControlCommand("Archivübersicht:", "", 1012, "showdropdown")
    Sleep(500)
    ControlCommand("Archivübersicht:", "", 1012, "SelectString", $inidatum)
    Sleep(500)
    Send("{Enter}")
    ControlClick("Archivübersicht: ", "", "Button5") ;Funktioniert Plötzlich einfach nicht mehr. (Deswegen das Send Enter)
    Sleep(500)
    ExitLoop
    Else
    WinActivate("Archivübersicht:")
    EndIf
    WEnd
    Sleep(1500)
    While 1
    If WinActive('Gruppenauswahl') Then
    ;Send("{Enter}")
    ControlClick('Gruppenauswahl', "", "Button4")
    ExitLoop
    Else
    WinActivate('Gruppenauswahl')
    EndIf
    WEnd

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

    Sleep(1500)
    While 1
    If WinActive('JUMO PCA 3000 ') Then
    Send("^p")
    ExitLoop
    Else
    WinActivate('JUMO PCA 3000')
    EndIf
    WEnd
    Sleep(1500)

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

    If WinGetTitle('Drucken Kanäle') Then
    While 1
    If WinActive('Drucken Kanäle') Then
    ;Send("{Enter}")
    ControlClick('Drucken Kanäle', "Diagramm", "Button4")
    Sleep(500)
    ControlClick('Drucken Kanäle', "Dargestellter Zeitbereich", "Button6")
    Sleep(500)
    ControlClick('Drucken Kanäle', "", "Button8")
    ExitLoop
    Else
    WinActivate('Drucken Kanäle')
    EndIf
    WEnd
    EndIf
    Sleep(1500)

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

    While 1
    If WinActive('Drucken') Then
    ControlCommand("Drucken", "", 1139, "showdropdown")
    Sleep(500)
    ControlCommand("Drucken", "", 1139, "SelectString", $Druckername)
    Sleep(500)
    ControlClick('Drucken', "OK", "Button10")
    ExitLoop
    Else
    WinActivate('Drucken')
    EndIf
    WEnd
    Sleep(4000)
    ProcessClose("pca177u.exe")

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

    EndFunc ;==>Autodrucken

    [/autoit]

    Eigenartiger weise will die der Befehlt in Zeile 29 nicht mehr Funktionieren.

  • Hallo douky,

    dieses Skript kann man anhand deiner Infos nicht nachvollziehen und es erscheint mir eine Ergänzungs-Lösung zu einer Individualsoftware zu sein.

    mfg autoBert

  • Eigenartiger weise will die der Befehlt in Zeile 29 nicht mehr Funktionieren.

    Vielleicht wurde ja durch ein Update des Programms etwas an der Bezeichnung der Buttons geändert. Kannst ja mal mit au3info kontrollieren ob das so noch stimmt.

    EDIT: Was in dieser Zeile auch auffällt ist das zusätzliche Leerzeichen im Titel ("Archivübersicht: "), welches du bei deinen anderen Control Funktionen nicht drin hast.