Ver Mensaje Individual
  #1  
Antiguo 09-05-2008
abelaquino abelaquino is offline
Registrado
 
Registrado: abr 2008
Posts: 6
Reputación: 0
abelaquino Va por buen camino
Exclamation Ejecutar programa externo con Lazarus

Tengo un problema al intentar ejecutar un programa externo con un launcher creado con lazarus utilizando el código que sigue a continuación....

Este código funciona en windows perfectamente, mi problema es con Linux, al ejecutarlo desde una terminal ejecuta la aplicación lanzada por mi Launcher perfectamente, accediendo a la carpeta en forma grafica tambien ejecuta perfectamente, pero cuando creo un lanzador en el escritorio llamando al launcher no me ejecuta nada, el codigo que creo no esta funcionando es el proc GetCurrentDir mas abajo mostrado...

Necesito una forma de obtener el nombre del directorio de mi launcher...
como ya les dije mas arriba, el GetCurrentDir funciona solo si estas ubicado en el directorio del launcher..

Desde ya muchas gracias
.. Espero una ayudita...



// Esto es un programa de demostración que enseña como lanzar
// un programa externo.
program launcher;

// Aquí incluimos archivos que tienen funciones y procedimientos
// útiles que necesitaremos.
uses
Classes, SysUtils, Process;

// Definición de "AProcess" como una variable
// de tipo "TProcess"
var
AProcess: TProcess;
DirectorioName: string;
// Aquí comienza a ejecutarse nuestro programa
begin

// Ahora se creará el objeto TProcess, y
// lo asignamos a la variable AProcess.
AProcess := TProcess.Create(nil);

// Le decimos al nuevo AProcess la orden que debe ejecutar.
// Vamos a utilizar el compilador FreePascal

//Obtenemos el nombre del directorio actual
DirectorioName := GetCurrentDir;
AProcess.CommandLine := 'wine '+ DirectorioName + '/' + ApplicationName + '.lin';

// writeln('wine ' + DirectorioName ApplicationName + '.lin');
// Application.;


// Definiremos una opción para cuando se ejecute
// el programa. Esta opción hará que nuestro programa
// no continúe hasta que el programa que lancemos
// haya terminado de ejecutarse. vvvvvvvvvvvvvv

// AProcess.Options := AProcess.Options + [poWaitOnExit];


// Ahora que AProcess conoce cuál es la orden,
// lo ejecutamos.
AProcess.Execute;

// Esto ocurrirá cuando ppc386 termine de ejecutarse.
AProcess.Free;
end.
Responder Con Cita