Mein Script lässt sich nicht beenden

  • Hallo Leute, hab mir für meine Arbeit ein kleinen Ping tool geschrieben,
    als Script funktioniert er hervorragend. Jetzt wollt ich mal ein Exe draus machen.
    Es funktioniert auch, leider lässt er sich nicht mehr beenden.
    Kann mir einer erklären wieso?
    Schaut euch mal bitte die EXE an, weil nur da das Problem besteht.

    Gruß remax

    [autoit]

    $Adresse = InputBox("Ping", "Geben Sie die IP Adresse ein:")
    run("cmd.exe")
    WinWait("C:\WINXP")
    Send("ping " & $Adresse)
    Sleep(100)
    Send("{ENTER}")

    [/autoit]
  • Probiers doch mal so:

    Spoiler anzeigen
    [autoit]

    AutoItSetOption ("WinTitleMatchMode",2)

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

    $Adresse = InputBox("Ping", "Geben Sie die IP Adresse ein:")
    run("cmd.exe")
    WinWait("cmd")
    Send("ping " & $Adresse)
    Sleep(100)
    Send("{ENTER}")
    Exit

    [/autoit]


    //Edit...kann ja so eig gar ned gehn...weil dem die Buttons eig egal sind...egal was du klickst...er macht immer das selbe...mhm...wie hatte ich das letztes mal gemacht...es liegt mir auf der zunge...wenn ichs wieder weis schreib ichs xD


    so habs...war doch voll einfach :D
    du darfst die exe einfach nicht ping nennen...sonst startet die cmd die exe wieder und wieder :D
    die buttons sind da egal xD

    Spoiler anzeigen
    [autoit]

    AutoItSetOption ("WinTitleMatchMode",2)

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

    $Adresse = InputBox("Ping", "Geben Sie die IP Adresse ein:")
    If $Adresse = "" Then Exit
    run(@SystemDir & "\cmd.exe")
    WinWait("cmd")
    Send("ping " & $Adresse)
    Sleep(100)
    Send("{ENTER}")
    Exit

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

    Mfg
    Apollo 13

    3 Mal editiert, zuletzt von bugmenot1 (13. Juni 2008 um 12:23)

  • Hmm mit der Aktion wird der Script immer wieder ausgeführt...
    Ich krieg hier immer wieder, den cmd.exe aufgerufen...
    gr

  • Also Exe kein Ping nennen OK ;)

    BugFix

    weil ich öfter mal ein hostnamen hinter ping eingeben muss und mit dieser Funktion es nicht klappt :)

    gruß Remax

  • Das muss doch auch mit Hostnamen gehen !
    Poste doch mal eine, mit dem es nicht klappt.

    Hier mal ein CMD-Nachbau mit Ping:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    $addr = "google.de"
    $timeout = 250
    $turns = 5
    HotKeySet("{ESC}","Quit")
    $return = _Ping($addr, $timeout,$turns)

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

    MsgBox(0x40000, '', $return)

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

    ToolTip("ESC zum beenden",0,0)

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

    While 1
    Sleep(1000)
    WEnd
    Func Quit()
    Exit
    EndFunc

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

    ; Author: Prog@ndy
    Func _Ping($addr, $timeout = 250, $count = 4, $info = 1, $infotimeout = 0)
    Local $text = "Ping wird ausgeführt für ", $accept = 0, $error = 0, $min = -1, $max = -1, $average = -1
    If $info Then SplashTextOn("Ping für " & $addr, "", 600, 300, -1, -1, 4, "Courier", 10)
    TCPStartup()
    Local $IP = TCPNameToIP($addr)
    If @error Then
    $text &= $IP & @CRLF & @CRLF & _FormatError(@error) & @CRLF
    If $info Then SplashTextOn("Ping für " & $addr, $text, 600, 300, -1, -1, 4, "Courier", 10)
    Else
    $text &= $IP & @CRLF

    If $info Then SplashTextOn("Ping für " & $addr, $text, 600, 300, -1, -1, 4, "Courier", 10)
    For $i = 1 To $count
    Local $var = Ping($addr, $timeout)
    If $var Then; also possible: If @error = 0 Then ...
    $text &= " Antwort, Reaktionszeit: " & $var & 'ms' & @CRLF
    $accept += 1
    If $min > $var Or $min = -1 Then $min = $var
    If $max < $var Then $max = $var
    $average += $var
    Else
    $text &= " Fehler: " & _PingError(@error) & @CRLF
    $error += 1
    EndIf
    If $info Then SplashTextOn("Ping für " & $addr, $text, 600, 300, -1, -1, 4, "Courier", 10)
    Next
    $average /= $accept
    $text &= StringFormat("Ping-Statistik für %s: \r\n\tPakete: Gesendet = %d, Empfangen = %d, Verloren = %d (%d%% Verlust)\r\n", $IP, $count, $accept, $error, Round(100 * ($error / $count)))
    $text &= StringFormat("Ca. Zeitangaben in Millisek.: \r\n\tMinimum = %dms, Maximum = %dms, Mittelwert = %dms", $min, $max, $average)
    If $info Then SplashTextOn("Ping für " & $addr, $text, 600, 300, -1, -1, 4, "Courier", 10)
    EndIf
    If $info And $infotimeout Then
    Sleep($infotimeout)
    SplashOff()
    EndIf
    TCPShutdown()
    Return $text
    EndFunc ;==>_Ping

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

    ; Author: Prog@ndy
    Func _PingError($error)
    Switch $error
    Case 1
    Return "Host is offline"
    Case 2
    Return "Host is unreachable"
    Case 3
    Return "Bad destination"
    Case 4
    Return "Ping Timeout / other error"
    Case Else
    Return "No error of Ping function"
    EndSwitch
    EndFunc ;==>_PingError

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

    ; Author: Prog@ndy
    Func _FormatError($error)
    Local $buffer = DllStructCreate("char[4096]")
    ; 0x00001000 = FORMAT_MESSAGE_FROM_SYSTEM
    Local $count = _WinAPI_FormatMessage(0x00001000, 0, $error, 0, DllStructGetPtr($buffer), 4096, 0)
    $text = StringLeft(DllStructGetData($buffer, 1), $count)
    $buffer = ""
    Return $text
    EndFunc ;==>_FormatError

    [/autoit]