Ir al contenido


Foto

Ejecutar programas externos desde Lazarus


  • Por favor identifícate para responder
3 respuestas en este tema

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 29 marzo 2010 - 09:28

Introducción

  Hay varias formas de ejecutar programas externos, pero nos centraremos en una, TProcess.
Si en Delphi utilizabas siempre ShellExecute y/o WinExec, puedes empezar a usar TProcess como alternativa en FPC/Lazarus (es válido también si estás ejecutando Lazarus en Linux, porque TProcess es multiplataforma).
  Nota: FPC/Lazarus puede utilizar ShellExecute y/o WinExec, pero sólo en Win32. Si tu programa está enfocado a varias plataformas, utiliza TProcess, ¡es mejor!.

TProcess

  Puedes utilizar TProcess para ejecutar programas externos. Algunas de sus ventajas son:
Independiente de la plataforma
Capaz de leer desde la entrada estándar (stdout) y de escribir en la salida estándar (stdin).
  Nota: TProcess no es un terminal de shell! No puedes ejecutar directamente secuencias de comandos o reorientar la salida usando operadores como "|", ">", "<", "&", etc. Es posible obtener los mismos resultados con TProcess utilizando Pascal, mira algunos ejemplos más abajo..
  Importante: Debes especificar la ruta completa al ejecutable. Por ejemplo "/bin/cp " en lugar de "cp". Si el programa está en la ruta estándar, puedes utilizar la función FindDefaultExecutablePath de la unidad FileUtil de la LCL.   



delphi
  1. // Este es un programa de demostración que enseña como lanzar
  2. // un programa externo.
  3. program lanzarprograma;
  4.  
  5. uses
  6.   Classes, SysUtils, Process;
  7.  
  8. // Definición de "UnProceso" como una variable
  9. // de tipo "TProcess"
  10. var
  11.   UnProceso: TProcess;
  12.  
  13. begin
  14.   // Ahora creamos UnProceso.
  15.   UnProceso := TProcess.Create(nil);
  16.  
  17.   // Asignamos a UnProceso la orden que debe ejecutar.
  18.   // Vamos a lanzar el compilador de FreePascal
  19.   UnProceso.CommandLine := &#39;ppc386 -h&#39;;
  20.  
  21.   // Definimos una opción de comportamiento de &#39;TProccess&#39;
  22.   // La opción poWaitOnExit hará que nuestro programa
  23.   // se detenga hasta que termine el programa lanzado
  24.   UnProceso.Options := UnProceso.Options + [poWaitOnExit];
  25.  
  26.   // Lanzamos la ejecución de &#39;ppc386 -h&#39;.
  27.   UnProceso.Execute;
  28.  
  29.   // Nuestro programa se detiene hasta que &#39;ppc386&#39; finaliza.
  30.   UnProceso.Free; 
  31. end.




Mas ejemplos y detalles aqui...

  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 30 marzo 2010 - 07:31

Excelente wiki amigo, muchas gracias (y).
  • 0

#3 GARDEN

GARDEN

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 20 abril 2012 - 02:36

Hola! Tengo que ejecutar, desde una aplicación Lazarus, otra aplicación Lazarus, que recibe parámetros, ¿puedo hacerlo con TProcess?.  Estoy terminando un código de un compañero que no sabe cómo hacerlo....y me lo pasaron.  Tampoco tengo idea cómo modificar el ejecutable para que reciba los parámetros.  Gracias luk!!!
  • 0

#4 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 21 abril 2012 - 12:24

Una opciòn tambien es "Shellexecute" agregando a la Uses  "ShellApi", recuerdo que habìa otro que era "Winexec" pero este ùltimo no pude usarlo en Lazarus..... :)


Saludos....
  • 0




IP.Board spam blocked by CleanTalk.