befehl ausführen beim herunterfahren

  • hi
    ich habe ein problem. mein programm funktioniert soweit gut. beim beenden des programmes werden gewisse befehle ausgeführt die sehr wichtig sind. ich habe dazu einen button "Beenden" im tray eingefügt und wenn ich nun darauf klicke werden die befehle ausgeführt und anschließend beendet sich das programm
    das ganze funktioniert aber nicht beim herunterfahren von windows. also da wird das programm einfach geschlossen und die befehle werden nicht ausgeführt was ja auch logisch ist. gibt es die möglichkeit autoit zu sagen das es bestimmte befehle beim "normalen" beenden ausführen soll? das wäre echt gut
    ich wäre sehr dankbar für hilfe :rolleyes:
    cu...

    [autoit]

    if fileexists("running") then
    msgbox(0,"Fehler","Die Musikverwaltung wird bereits ausgeführt.")
    else
    $handle=fileopen("running",1)
    fileclose($handle)

    global $ini[3][2],$apache,$mysql

    path("server\apache\conf\httpd.conf",0)
    path("server\php\php.ini",1)
    path("server\mysql\my.ini",2)

    $apache=run("server\apache\bin\httpd","",@sw_hide)
    $mysql=run("server\mysql\bin\mysqld-nt","",@sw_hide)

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

    $handle=traycreateitem("Beenden")
    trayitemsetonevent($handle,"beenden")

    while 1
    sleep(1)
    wend
    endif

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

    ;#################################################
    ;#################################################

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

    func beenden()
    run("taskkill /pid "&$apache,"",@sw_hide)
    processwaitclose($apache)

    run("server\mysql\bin\mysqladmin -u root shutdown","",@sw_hide)
    processwaitclose($mysql)

    for $counter=0 to 2
    $handle=fileopen($ini[$counter][0],2)
    filewrite($handle,$ini[$counter][1])
    fileclose($handle)
    next

    filedelete("running")

    exit
    endfunc

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

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

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

    func path($file,$counter)
    $ini[$counter][0]=$file
    $ini[$counter][1]=fileread($file)

    $handle=fileopen($file,2)

    $scriptdir=stringreplace(@scriptdir,"\","/")
    $content=stringreplace($ini[$counter][1],"<<<<< PATH >>>>>",$scriptdir)

    filewrite($handle,$content)
    fileclose($handle)
    endfunc

    [/autoit]
  • Verwende einfach OnAutoItExit :)

    [autoit]

    Func OnAutoItExit()
    ; Wird beim beenden ausgeführt
    EndFunc

    [/autoit]
  • ah cool. werde das gleich testen ;)
    edit: jo danke dir vielmals klappt super ;)

    Einmal editiert, zuletzt von autoit_newbie (24. Oktober 2008 um 19:55)