Seite 2 von 2

Verfasst: 17.02.2008 19:17
von Andreas_S
Bei mir ist Childprocess.exe zwar schon beendet aber IsProgram(Handle) wird nie 0...

Verfasst: 17.02.2008 19:21
von DarkDragon
Andreas_S hat geschrieben:Bei mir ist Childprocess.exe zwar schon beendet aber der Handle wird nie 0...
IsProgram -> ProgramRunning

Guck einfach in der Hilfe unter RunProgram, da ist ein Beispiel.

Verfasst: 17.02.2008 19:25
von Andreas_S
Oh, Danke!

Verfasst: 17.02.2008 19:32
von KeyKon
Irgendwie hab ich ne Denkblockade, ich check nich wie ich was an den Childprocess schick um es dort zu verarbeiten...

Verfasst: 17.02.2008 19:37
von PMV

Code: Alles auswählen

WriteProgramString(), WriteProgramStringN(), WriteProgramData()
... und zum empfangen halt

Code: Alles auswählen

Input(), Inkey()
MFG PMV

Verfasst: 17.02.2008 19:45
von Andreas_S
Childprocess.exe:

Code: Alles auswählen

OpenConsole()

PrintN("Hallo, ich bin der Childprocess.exe")

ClearConsole()

*Puffer = AllocateMemory(1000)

While Not ReadConsoleData(*Puffer, 1000)
	Delay(10)
Wend

MessageRequester("Message", PeekS(*Puffer))

CloseConsole()
test Code:

Code: Alles auswählen

EnableExplicit
Define hProcess.l

OpenConsole()

hProcess = RunProgram(OpenFileRequester("","","",0), "", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)

While ProgramRunning(hProcess)
  If AvailableProgramOutput(hProcess)
    PrintN("Childprocess.exe: " + ReadProgramString(hProcess))
    WriteProgramString(hProcess, "Hello Too!")
  Else
    Delay(1) 
  EndIf
Wend
PrintN("ChildProcess.exe wurde beendet")
Input()

Verfasst: 17.02.2008 19:46
von KeyKon
Ah, jetz hats geschnackelt^^
thx für die Geduld *g*

Verfasst: 17.02.2008 19:56
von PMV
Ach ja ... Read/WriteConsoleData() gibs ja auch noch -.-
... aber für Strings eignet sich Input() und Print()/ PrintN() besser. Also
wäre das für Childprocess.exe:

Code: Alles auswählen

OpenConsole() 

PrintN("Hallo, ich bin der Childprocess.exe") 
MessageRequester("Message", Input()) 

CloseConsole()
Und dabei ist noch an zu merken, das Input() #PB_Input_Eof zurück gibt,
fals das Hauptprogramm vorzeitig beendet wird. Damit kann man sicher
stellen, dass der Childprocess nicht weiter läuft, wenn das
Hauptprogramm längst beendet wurde. (seis auch nur wegen Absturz)

MFG PMV

Verfasst: 17.02.2008 20:04
von KeyKon
PMV hat geschrieben:Und dabei ist noch an zu merken, das Input() #PB_Input_Eof zurück gibt, falls das Hauptprogramm vorzeitig beendet wird...
Jo ich hab mich vorhin schon gewundert was da dann plötzlich für eine Flut an undarstellbaren Zeichen kam ^^