Seite 1 von 1

Unicode ReadProgramData,ReadProgramString

Verfasst: 04.09.2013 15:04
von kevv
Hallo,
warum läuft der folgende code nicht im Unicode modus ???

Code: Alles auswählen

Define *CMDBuffer = AllocateMemory(5000)


ProgramID = RunProgram("cmd", "", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Error |#PB_Program_Hide)
Delay(500)

WriteProgramStringN(ProgramID, "dir C:\")
Delay(1000)


Repeat
    bytes.i= AvailableProgramOutput(ProgramID)
    If bytes
      
      ;Debug ReadProgramString(ProgramID)
      
     ReadProgramData(ProgramID, *CMDBuffer, bytes)
     Debug PeekS(*CMDBuffer,bytes,#PB_UTF8)
     
     
    EndIf
    Delay(200)

ForEver 

Re: Unicode ReadProgramData,ReadProgramString

Verfasst: 04.09.2013 15:14
von _JON_
Das wird wohl dran liegen, dass WriteProgramStringN() ein UNICODE string sendet.
Aber cmd.exe braucht einen ASCII string.

Re: Unicode ReadProgramData,ReadProgramString

Verfasst: 04.09.2013 18:26
von _JON_
hier mal 2 Möglichkeiten das in Unicode modus zu machen

Code: Alles auswählen

ProgramID = RunProgram("cmd", "/c dir C:\", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Error |#PB_Program_Hide)

While ProgramRunning(ProgramID)
  bytes.i= AvailableProgramOutput(ProgramID)
  If bytes
    *CMDBuffer = AllocateMemory(bytes)
    ReadProgramData(ProgramID, *CMDBuffer, bytes)
    Debug PeekS(*CMDBuffer, bytes, #PB_Ascii)
    FreeMemory(*CMDBuffer)
  EndIf
  Delay(200)
Wend
Oder gleich cmd.exe Unicode ausspucken lassen:

Code: Alles auswählen

ProgramID = RunProgram("cmd", "/u /c dir C:\", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Error |#PB_Program_Hide)

While ProgramRunning(ProgramID)
  bytes.i= AvailableProgramOutput(ProgramID)
  If bytes
    *CMDBuffer = AllocateMemory(bytes)
    ReadProgramData(ProgramID, *CMDBuffer, bytes)
    Debug PeekS(*CMDBuffer, bytes, #PB_Unicode)
    FreeMemory(*CMDBuffer)
  EndIf
  Delay(200)
Wend