%ERRORLEVEL% von Konsolenbefehl abfragen

  • Hallo,

    ich möchte die AERO-Oberfläche von Windows-Vista abschalten bevor ich eine weiteres Programm starte. Der AutoIt Befehl sieht wie folgt aus:

    $pid=Run(@ComSpec & " /c " & 'net stop uxsms', "", @SW_HIDE)


    Wenn das Programm beendet ist soll AERO wieder eingeschaltet werden falls es vorher lief. Dazu muss ich wissen welchen %ERRORLEVEL% Wert das "net stop uxsms" Kommando produziert. Ist dieser Wert = 0 war AERO gestartet wenn der Wert = 2 ist war AERO nicht gestartet.

    Wie kann ich den vom "net stop uxsms" Befehl erzeugten %ERRORLEVEL% abfragen?

  • Hi du kannst folgendes auslesen

    [autoit]

    StderrRead ;<-- liest den Errorkanal aus
    StdoutRead ;<-- liest den Ausgabekanal aus

    [/autoit]


    Nur dein Quellcode müßte so aussehen.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $pid=Run(@ComSpec & " /c " & 'net stop uxsms', "", @SW_HIDE,4)
    ; 2 für StdoutRead
    ; 4 für StderrRead
    ; 6 für beides

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

    Local $line
    While 1
    $line = StderrRead($pid)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
    Wend

    [/autoit]

    Ansonsten eben den Ausgabekannal mal auslesen. funktioniert genauso nur eben mit StdoutRead
    In der Hilfe gibt es aber och ein schönes Beispiel dazu. ;)


    MfG
    Der_Doc

  • Das habe ich schon probiert.
    StderrRead() gibt aber nicht den %ERRORLEVEL% sondern nur einen Fehlertext aus. Der Fehlertext liefert aber nicht notwendig eine Information darüber ob AERO an oder aus war. Es werden z.B. auch Felermeldungen ausgegeben wenn bei aktiviertem UAC keine Rechte zum Ausführen von net stop bestehen oder die Fehlermeldung das UAC nicht aktiviert ist.

  • soll das gesamte Aero-Design oder nur der Glass-Effekt abgeschaltet werden? Wenn Glass in Vista aktiviert ist, kann er mit
    _DWMEnableComposition(False) abgeschaltet werden und mit
    _DWMEnableComposition(True) wieder an. Er wird auch wieder angeschaltet, wenn alle Prozesse, die Glass deaktiviert haben, beendet sind.
    Wenn der Dienst nicht gestartet ist, machen diese Funktionen nichts.

    Spoiler anzeigen
    [autoit]

    Func _DWMIsCompositionEnabled()
    ; Prog@ndy
    Local $result = DllCall("dwmapi.dll", "lresult", "DwmIsCompositionEnabled", "int*", 0)
    If @error Then Return SetError(1,0,0)
    Return SetError($result[0],0,$result[1])
    EndFunc

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

    Global Const $DWM_EC_ENABLECOMPOSITION = 1
    Global Const $DWM_EC_DISABLECOMPOSITION = 0
    Func _DWMEnableComposition($fEnabled)
    ; Prog@ndy
    Local $result = DllCall("dwmapi.dll", "lresult", "DwmEnableComposition", "uint", $fEnabled)
    If @error Then Return SetError(1,0,0)
    Return SetError($result[0],0,$result[0]=0)
    EndFunc

    [/autoit]