Problem mit kompilierten Script

  • Hallo allerseits,

    nach mehreren Stunden ergebnisloser Fehlersuche wende ich mich nun an euch. Auch habe ich schon Hilfevorschläge von Andy angewendet, leider hat nichts geholfen. Vorab erst einmal ein paar Sachen zur Funktionen des Scripts.
    Es handelt sich um ein Script das das Programm League of Legends und den LoLRecorder startet. Desweiteren sorgt das Script dafür das man vom Patcher zum Login-Screen kommt. Solange League of Legends läuft, läuft auch der LoLRecorder. Wird jedoch League of Legends geschlossen so soll auch besagter LoLRecorder geschlossen werden.

    Und nun zum Problem:
    Eigentlich funktioniert alles wunderbar wenn ich jedoch das Script kompiliere will die .exe einfach nicht richtig funktionieren. Konkret bricht das Script nach Zeile 53 einfach ohne ersichtlichen Grund ab. Was habe ich falsch gemacht und wie lässt sich das beheben?

    Und hier das Script:

    Spoiler anzeigen
    [autoit]

    ;AutoIt Optionen
    Opt("MouseCoordMode", 0)
    Opt("PixelCoordMode", 0)
    Opt("MustDeclareVars", 1)
    ;Variablen
    Dim $confpath
    Dim $configda
    Dim $launcher
    Dim $recorder
    Dim $col
    Dim $bool
    Dim $PID
    ;Prozesse killen
    ProcessClose("LoLLauncher.exe")
    ProcessClose("LolClient.exe")
    ProcessClose("LOLRecorder.exe")
    ;Variablen für Config
    $confpath = @HomeDrive & "\lolconf.ini"
    $configda = FileExists($confpath);
    ;Checken ob Config da ist
    if not $configda Then
    IniWrite($confpath,"Path","LoLLauncher","Hier den vollständigen Link zum LoL Launcher! Bsp: C:\LoL\lol.launcher.exe")
    IniWrite($confpath,"Path","LoLRecorder","Hier den vollständigen Link zum LoL Recorder! Bsp: C:\LOLReplay\LOLRecorder.exe")
    TrayTip("LoLLauncher","Config wurde erstellt in " & $confpath & "!",5)
    Run(@SystemDir & "\notepad.exe " & $confpath);
    Sleep(5000);
    Exit
    EndIf;
    ;Config lesen
    $launcher = IniRead($confpath,"Path", "LoLLauncher","derp")
    $recorder = IniRead($confpath,"Path", "LoLRecorder","derp")
    ;LoL starten
    Run($launcher)
    TrayTip("LOLLauncher","LoL gestartet",10)
    Sleep(1500)
    TrayTip("","",0)
    ;Auf Patcherfenster warten
    WinWait("PVP.net Patcher")
    ;LoLRecorder starten
    Run($recorder)
    TrayTip("LOLLauncher","LoLRecorder gestartet",10,1)
    Sleep(1500)
    TrayTip("","",0)
    WinActivate("PVP.net Patcher")
    ;Checken ob es noch geupdatet werden muss
    $col = PixelGetColor(655,519,0)
    $bool = ($col = "11760930")
    while not $bool
    $col = PixelGetColor(655,519,0)
    $bool = ($col = "11760930")
    Sleep(100)
    WEnd
    MouseClick("Left", 655, 519)
    ;Prüfen ob LoL noch läuft
    ProcessWait("LolClient.exe")
    $PID = ProcessExists("LolClient.exe")
    ProcessWaitClose($PID)
    ProcessClose("LOLRecorder.exe")
    TrayTip("LOLLauncher","LoLRecorder geschlossen",10)
    Sleep(1500)
    TrayTip("","",0)

    [/autoit]

    PS: Ich würde mich über Optimierungsvorschläge freuen. ^^

  • Probier es mal so

    Spoiler anzeigen
    [autoit]

    ;AutoIt Optionen
    Opt("MouseCoordMode", 0)
    Opt("PixelCoordMode", 0)
    Opt("MustDeclareVars", 1)
    ;Variablen
    Dim $confpath
    Dim $configda
    Dim $launcher
    Dim $recorder
    Dim $col
    Dim $bool
    Dim $PID
    ;Prozesse killen
    ProcessClose("LoLLauncher.exe")
    ProcessClose("LolClient.exe")
    ProcessClose("LOLRecorder.exe")
    ;Variablen für Config
    $confpath = @HomeDrive & "\lolconf.ini"
    $configda = FileExists($confpath);
    ;Checken ob Config da ist
    If Not $configda Then
    IniWrite($confpath, "Path", "LoLLauncher", "Hier den vollständigen Link zum LoL Launcher! Bsp: C:\LoL\lol.launcher.exe")
    IniWrite($confpath, "Path", "LoLRecorder", "Hier den vollständigen Link zum LoL Recorder! Bsp: C:\LOLReplay\LOLRecorder.exe")
    TrayTip("LoLLauncher", "Config wurde erstellt in " & $confpath & "!", 5)
    Run(@SystemDir & "\notepad.exe " & $confpath);
    Sleep(5000);
    Exit
    EndIf;
    ;Config lesen
    $launcher = IniRead($confpath, "Path", "LoLLauncher", "derp")
    $recorder = IniRead($confpath, "Path", "LoLRecorder", "derp")
    ;LoL starten
    $pidlauncher = Run($launcher)
    TrayTip("LOLLauncher", "LoL gestartet", 10)
    Sleep(1500)
    TrayTip("", "", 0)
    ;Auf Patcherfenster warten
    WinWait("PVP.net Patcher")
    ;LoLRecorder starten
    $pidrecorder = Run($recorder)
    TrayTip("LOLLauncher", "LoLRecorder gestartet", 10, 1)
    Sleep(1500)
    TrayTip("", "", 0)
    WinActivate("PVP.net Patcher")
    ;Checken ob es noch geupdatet werden muss
    $col = PixelGetColor(655, 519)
    $bool = ($col = "11760930")
    While Not $bool
    $col = PixelGetColor(655, 519)
    $bool = ($col = "11760930")
    Sleep(100)
    WEnd
    MouseClick("Left", 655, 519)

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

    ProcessWaitClose($pidlauncher)
    ProcessClose($pidrecorder)
    TrayTip("LOLLauncher", "LoLRecorder geschlossen", 10)
    Sleep(1500)
    TrayTip("", "", 0)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Achja ich hätte dazu sagen sollen das der Prozess sich dazwischen ändert.

    lol.launcher.exe -> LoLLauncher.exe -> LolClient.exe

    Deswegen funktioniert das leider nicht