Donc Je pense qu'il est bon de partager la solution de fryquez, ici.
Code : Tout sélectionner
prog$ = GetEnvironmentVariable("COMSPEC") ;cmd.exe
dosbox = RunProgram(prog$, "", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide|#PB_Program_Ascii)
If dosbox
OpenWindow(0,0,0,400,500,"Results from DosBox",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
StartDrawing(WindowOutput(0))
DrawText(65,200, "Pinging now, Stand by for results...", #Black, GetSysColor_(#COLOR_BTNFACE))
StopDrawing()
NewList results.s()
WriteProgramStringN(dosbox, "ping google.com", #PB_Ascii)
WriteProgramData(dosbox, #PB_Program_Eof, 0)
While ProgramRunning(dosbox)
If AvailableProgramOutput(dosbox)
AddElement(results())
sOEM_in_unicode.s = ReadProgramString(dosbox, #PB_Ascii)
iByteLength = Len(sOEM_in_unicode) + 2
sOem_in_Ascii.s = Space(iByteLength)
PokeS(@sOem_in_Ascii, sOEM_in_unicode, -1, #PB_Ascii)
sUnicode.s = Space(iByteLength)
OemToChar_(@sOem_in_Ascii, @sUnicode)
results() = sUnicode
Else
Delay(1)
EndIf
Wend
AddElement(results())
AddElement(results())
results() = "Program finished with exit code = " + Str(ProgramExitCode(dosbox))
CloseProgram(dosbox)
ListViewGadget(0,0,0,400,500)
ForEach results()
AddGadgetItem(0, -1, results())
Next
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
Else
MessageRequester("OOPS!", "Can't find " + prog$ )
EndIf