Hola jbecerra, bienvenido a
Club Delphi .
Al tratarse de
Lazarus no te recomiendo usar
WinExec o
ShellExecute ya que le quitas portabilidad a tu aplicación. En su lugar usa
ExecuteProcess o mejor aún
TProcess que te dá mas poder sobre la acción.
Con
ExecuteProcess:
Código Delphi
[-]
procedure crearfile(const D:string);
var
f:textfile;
begin
Assign(f, D + 'Convertir.bat');
rewrite(f);
write (f, 'PAUSE'); close(f);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Dir:string;
begin
Dir:= IncludeTrailingPathDelimiter('C:\Windows');
if SetCurrentDir(Dir) then
begin
crearfile(Dir);
ExecuteProcess(Dir + 'Convertir.bat','');
end;
end;
Con
TProcess:
Código Delphi
[-]
uses Process;
procedure crearfile(const D:string);
var
f:textfile;
begin
Assign(f, D);
rewrite(f);
write (f, 'PAUSE'); close(f);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Dir, Bat:string;
begin
Dir:= IncludeTrailingPathDelimiter('C:\Windows');
Bat:= 'Convertir.bat';
crearfile(Dir + Bat);
with TProcess.Create(nil) do
try
Executable:= Dir + Bat;
Execute;
finally
Free;
end;
end;
En este enlace tenes información mas detallada:
Executing External Programs/es
Saludos