Estimado
jafera:
Yo utilizo esta función que realiza lo que tú necesitas (No recuerdo de dónde la obtuve):
Código Delphi
[-]function Ejecutar(Programa:String;Esperar:Boolean=True):Boolean;
var
ProcInfo:TProcessInformation;
Info:TStartupInfo;
begin
FillChar(Info,SizeOF(Info),0);
Info.cb:=SizeOf(Info);
Info.dwFlags:=STARTF_USESHOWWINDOW;
Info.wShowWindow:=SW_SHOWNORMAL;
Result:=CreateProcess(nil,PChar(Programa),nil,nil,False,0,nil,nil,Info,ProcInfo);
if Esperar then
while WaitForSingleObject(ProcInfo.hProcess,100)=Wait_TimeOut do
begin
Application.ProcessMessages;
if Application.Terminated then Break;
end;
end;
Ejemplo para llamar el programa, que en este caso es un grabador de CD alojado en una carpeta del ejecutable:
Código Delphi
[-]begin
with TRegistry.Create do
try
RootKey:= HKEY_CURRENT_USER;
OpenKey('Software\SoftMedica\Nemesis WorkStation', True);
WriteString('DBEditDir.Text',DBEditDir.Text);
WriteString('DBText1.Caption',DBText1.Caption);
Ejecutar(ExtractFilePath(Application.ExeName) + 'Grabador\CDBurner.exe', False);
finally
Free;
Yo le paso algunos parámetros de ejecución, guardándolos en el registro de Windows, a los que accede el grabador al crearse.
Espero que te pueda servir.
Saludos