Array
(
)

Chamar uma aplic console de outra aplic console

Criscarneirocwb
   - 10 jan 2006

Eu criei uma aplicação console que chama uma outra aplicação console usando CreateProcess. A segunda aplicação necessita herdar o console da aplicação que chama.
Mas quando eu finalizo a aplicação pai, a segunda aplicação perde seu console, a aplicação ainda consta do Process do Windows mas não escreve e não lê mais do console.
Isto é um problema, porque eu necessito rodar esta aplicação em uma sessão do telnet e eu não posso criar um console novo para a segunda aplicação.
Alguem ai sabe me ajudar?

Grato

Cristiano

Codigo usado pra chamar a aplicação filho:
---------------------cut herre------------------------------
procedure ExecProgram(const ProgramName, Parameters: String; State: TExecProgramState);
var
Security : TSecurityAttributes;
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CreateOK: Boolean;
Apprunning : DWord;
begin
//Security
Security.nlength := SizeOf(TSecurityAttributes) ;
Security.binherithandle := true;
Security.lpsecuritydescriptor := nil;
//Startup Info
GetStartupInfo(StartInfo);
StartInfo.cb := SizeOf(TStartupInfo);
StartInfo.dwFlags := STARTF_USESTDHANDLES+
STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := SW_HIDE;
StartInfo.hStdInput := Console.InputHandle;
StartInfo.hStdOutput := Console.OutputHandle;

//ProcInfo
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);

CreateOK := CreateProcess(nil, PChar(ProgramName+´ ´+Parameters),
@Security, @Security,True,
NORMAL_PRIORITY_CLASS,
nil, nil, StartInfo, ProcInfo);

if Not CreateOK then
begin
raise Exception.Create(´Unable to run ´+ProgramName);
end;
end;
---------------------cut herre------------------------------