FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Si dices que el programa arranca correctamente desde un terminal entonces dudo que el problema sea del código fuente.
Asegúrate de que pones la orden completa, con toda la ruta desde la raíz, en el campo de ejecución del lanzador. En mi escritorio (Xfce) este campo se llama "Orden" pero en otros escritorios (Gnome, KDE, etc) puede que se llame diferente. También debes tener en cuenta si el programa necesita de un terminal (o consola de texto). En GNU/Linux esto no suele dar muchos problemas, aunque según cómo utilices dicho terminal (el famoso "stdout") puede que la aplicación se vuelva "invisible", es decir, que se ejecuta pero no se ve. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ejecutar programa externo desde PHP | fide | PHP | 10 | 07-02-2008 21:21:54 |
Ejecutar mi programa hecho en Lazarus sobre Linux | mr_pascale | Lazarus, FreePascal, Kylix, etc. | 9 | 11-08-2007 18:54:25 |
programa externo | hugoacosta | API de Windows | 2 | 17-04-2006 19:44:57 |
congelar programa externo. | kalisto | Varios | 8 | 23-06-2005 20:03:10 |
Ejecutar un programa externo desde un programa de Delphi | Roger_Fernandez | Varios | 3 | 02-09-2004 18:05:36 |
|