autoit soll sich nicht automatisch beenden

    • Offizieller Beitrag

    Nimm FileExist und FileOpen auch mit dem Makro @Scriptdir . Makros siehe meine letzte Post .

    MfG Raupi

    Edit dein Script sieht so bei mir aus und es funzt so wie es soll .

    Spoiler anzeigen
    [autoit]

    opt("traymenumode",1)
    opt("trayoneventmode",1)

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

    $beenden=traycreateitem("Beenden")

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

    if fileexists(@ScriptDir&"\running") then
    msgbox(0,"Fehler","Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
    exit
    else
    trayitemsetonevent($beenden,"beenden")
    $Test = fileopen(@ScriptDir&"\running",1)
    fileClose($Test)
    ;run("server\apache\bin\httpd.exe","server\apache\bin")
    ;run("server\mysql\bin\mysqld-nt.exe","server\mysql\bin")
    endif

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

    while 1
    sleep(1)
    wend
    func beenden() ;processclose("httpd.exe")
    ;processclose("mysqld-nt.exe")
    FileDelete(@ScriptDir&"\running.*")
    exit
    endfunc

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

    Besser ist es aber wenn du die Variablen Declarierst :

    Spoiler anzeigen
    [autoit]

    Opt("traymenumode", 1)
    Opt("trayoneventmode", 1)
    Opt("MustDeclarevars", 1)
    Global $beenden = TrayCreateItem("Beenden")

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

    If FileExists(@ScriptDir & "\running") Then
    MsgBox(0, "Fehler", "Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
    Exit
    Else
    TrayItemSetOnEvent($beenden, "beenden")
    Global $Test = FileOpen(@ScriptDir & "\running", 1)
    FileClose($Test)
    ;run("server\apache\bin\httpd.exe","server\apache\bin")
    ;run("server\mysql\bin\mysqld-nt.exe","server\mysql\bin")
    EndIf

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

    While 1
    Sleep(1)
    WEnd
    Func beenden() ;processclose("httpd.exe")
    ;processclose("mysqld-nt.exe")
    FileDelete(@ScriptDir & "\running.*")
    Exit
    EndFunc ;==>beenden

    [/autoit]

    MfG Raupi

  • hi
    das problem lag daran das ich fileclose vergessen habe. habe das grade erst jetzt in deinem code gesehen :S somit konnte er es ja nicht löschen weil es noch verwendet wurde. jetzt funzt alles. man muss aber wirklich nicht unbedingt den kompletten pfad angeben. es geht auch so bei mir :)
    ich danke dir und allen anderen für eure hilfe :)
    sehr nett hier. in anderen foren wird man teilweise echt als newbie beleidigt und die threads werden geschlossen... X(

    [autoit]

    func beenden()
    ;processclose("httpd.exe")
    ;processclose("mysqld-nt.exe")

    filedelete("running")

    exit
    endfunc

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;

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

    if fileexists("running") then
    msgbox(0,"Fehler","Das Programm wird bereits ausgeführt. Mehrere Instanzen sind nicht möglich.")
    else
    opt("traymenumode",1)
    opt("trayoneventmode",1)

    trayitemsetonevent(traycreateitem("Beenden"),"beenden")

    $running=fileopen("running",1)
    fileclose($running);

    ;run("server\apache\bin\httpd.exe","server\apache\bin")
    ;run("server\mysql\bin\mysqld-nt.exe","server\mysql\bin")

    while 1
    sleep(1)
    wend
    endif

    [/autoit]
    • Offizieller Beitrag

    Kein Problem :D . Wenn des Thema erledigt ist setze in deiner 1. Mail des ganze auf gelöst .

    MfG Raupi