StdoutRead -> MIT Umlaute

  • Mein Problem ist das ich die ausgaben von StdoutRead gerne MIT Umlauten hätte

    Ich habe diese Lösung von Dranu bekommen und auch im Englischen Forum gefunden nur funktioniert das ganze bei mir net

    Mein Code:

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

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

    Local $foo = Run(@ComSpec & " /c POWERCFG /list", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $line
    While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    $line = CharToOEM($line)
    MsgBox(0, "STDOUT read:", $line)
    WEnd

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

    Func CharToOEM($szSrc)
    Local $placeholder
    For $i = 0 To StringLen($szSrc)
    $placeholder &= " "
    Next
    Local $lRetVal = DllCall("user32.dll", "long", "CharToOem", "str", $szSrc, "str", $placeholder)
    If IsArray($lRetVal) And $lRetVal[0] = 1 Then
    Return SetError(0, 0, $lRetVal[2])
    EndIf
    EndFunc ;==>CharToOEM

    [/autoit]

    Das Ergebniss:

    Code
    GUID des Energieschemas: 381b4222-f694-41f0-9685-ff5bb260df2e  (Ausbalanciert)
    GUID des Energieschemas: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (H”chstleistung) *
    GUID des Energieschemas: a1841308-3541-4fab-bc81-f71556f20b4a  (Energiesparmodus)

    Hoffe einer schafft es :P
    Mfg Keyle

  • Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

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

    Local $foo = Run(@ComSpec & " /c POWERCFG /list", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $line
    While 1
    $line &= StdoutRead($foo)
    If @error Then ExitLoop
    WEnd
    $line = _OEMToAnsi($line)
    MsgBox(0, "STDOUT read:",$line)

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

    Func _OEMToAnsi($sOEM)
    Local $a_AnsiFName = DllCall('user32.dll', 'Int', 'OemToChar', 'str', $sOEM, 'str', '')
    If @error = 0 Then $sAnsi = $a_AnsiFName[2]
    Return $sAnsi
    EndFunc ;==>_OEMToAnsi

    [/autoit]