Run versus RunWait

  • Hallo zusammen,

    die Nervensäge schon wieder. Hab gerade das nächste Problem.

    Wenn ich den Command

    netsh Show helper

    mit "RunWait" absetze bekomme ich keinen Output

    wenn ich den Command mit "Run" absetze kommt ein Ergebnis

    Hab jetz schon verschd. Sachen ausprobiert.

    Bekomm ich nochmal einen kleinen Tip?

    Gruß co_steffl


    Spoiler anzeigen


    Func _GetDOSOutput(ByRef $sCommand)

    $s_Command = "netsh Show helper"

    $iPID = RunWait('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) läuft nicht....


    $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) läuft.....


    Local $iPID, $sOutput = ""

    Sleep(500)

    While 1

    $sOutput &= StdoutRead($iPID, False, False)

    MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput & " Process ID " & $iPID)

    If @error Then

    ExitLoop

    EndIf

    Sleep(10)

    Exit

    WEnd

    EndFunc ;==>_GetDOSOutput

  • Moin.

    Im Moment in dem RunWait beendet wird ist die PID des Prozesses nicht mehr existent sondern ist der Returnwert des sich gerade beendenden Prozesses. Und die WhileWEnd-Schleife geht erst los, wenn der Prozesse, der durch RunWait gestartet wird erst beendet ist. Lies mal in der Hilfe zu RunWait nochmal ganz genau rein, um den Unterschied zu verstehen.

    Gruß, Simpel

    SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win7Pro SP1 OSArch = X64 Language = 0407/german

    H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive)

    86223-publicdomain-88x31-png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.

  • Hi Simpel

    danke. Hab mich nochmal damit beschäftigt. Du hast recht. RunWait gibt nur einen ExitCode zurück.

    Run liefert die PID.... :cursing: (Mühsam ernährt sich das Eichhörnchen)

    Danke

    Spoiler anzeigen

    Func _GetDOSOutput(ByRef $sCommand)

    $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $iPID, $sOutput = ""
    ProcessWaitClose ( $iPID ,60)
    While 1

    $sOutput &= StdoutRead($iPID, False, False)

    MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput & " Process ID " & $iPID)

    If @error Then

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @error = ' & @error & @CRLF & '>Error code: ' & $sOutput & @CRLF) ;### Debug Console

    ExitLoop

    EndIf

    Sleep(10)

    Exit

    WEnd

    Return $sOutput

    EndFunc ;==>_GetDOSOutput