Ver Mensaje Individual
  #1  
Antiguo 15-12-2008
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Reputación: 18
JF Sebastian Va por buen camino
Ejecutar programa DOS con redireccion de entrada

Buenas:
Se trata de ejecutar desde delphi un programa de MS-DOS que pide cierta entrada desde teclado.
Para automatizar esto redirijo la entrada con un fichero texto.
El programa ms-dos se llama: execufsm
El fichero de texto a redirigir se llama: in0.txt
in0.txt contiene dos nombres de ficheros con comillas simples:
'cu0.txt'
'cu0.out'
Desde la consola de ms-dos tecleo:

execufsm < in0.txt

y funciona perfectamente.
El problema esta en delphi que no me ejecuta el proceso siguiente:

Código Delphi [-]
var sc,sp: string;
    SUInfo: TStartupInfo;
    ProcInfo: TProcessInformation;
    tmpcard: cardinal;
    F1: TextFile;
begin
  ChDir(ExtractFileDir(paramStr(0)));
  AssignFile(F1,'in0.txt');
  Rewrite(F1);
  writeln(F1,'''cu0.txt''');
  writeln(F1,'''cu0.out''');
  CloseFile(F1);
  sc := 'execufsm.exe < in0.txt';
  sp := ExtractFilePath(ExtractFileDir(paramStr(0))+'\execufsm.exe');
  fillchar(SuInfo, sizeof(suinfo),#0);
  fillchar(ProcInfo, sizeof(procinfo),#0);
  SuInfo.cb := Sizeof(SuInfo);
  SUInfo.dwFlags := STARTF_USESHOWWINDOW;
  SUInfo.wShowWindow := SW_HIDE; //SW_SHOW;
  SUInfo.wShowWindow := SW_SHOW;
  if not createprocess(nil,
                       pchar(sc),
                       nil,
                       nil,FALSE,
                       CREATE_NEW_CONSOLE or
                       NORMAL_PRIORITY_CLASS,
                       nil,
                       pChar(sp),
                       SUInfo,
                       ProcInfo) then
  begin
    ShowMessage('FAIL');
    Exit;
  end;
  repeat
    Application.ProcessMessages;
    if GetExitCodeProcess(ProcInfo.hProcess, tmpcard) then
    begin
      if tmpCard = 0 then Break;
    end;
  until False or Application.Terminated;
  if TerminateProcess(ProcInfo.hProcess, tmpCard) then
    fillchar(ProcInfo, Sizeof(Procinfo),#0);

Se abre el programa pero se queda a la espera de introducir el texto con el teclado. Es decir no redirige la entrada de teclado.

El fichero que uso desde la consola es el que creo desde delphi y desde la consola funciona perfectamente...


Un saludo

Última edición por JF Sebastian fecha: 15-12-2008 a las 20:01:30.
Responder Con Cita