4D v16.3

LAUNCH EXTERNAL PROCESS

Inicio

 
4D v16.3
LAUNCH EXTERNAL PROCESS

LAUNCH EXTERNAL PROCESS 


 

LAUNCH EXTERNAL PROCESS ( nomArchivo {; flujoEntrada {; flujoSalida {; flujoError}}}{; pid} ) 
Parámetro Tipo   Descripción
nomArchivo  Cadena in Ruta de acceso y argumentos del archivo a abrir
flujoEntrada  Cadena, BLOB in Flujo de entrada(stdin)
flujoSalida  Cadena, BLOB in Flujo de salida (stdout)
flujoError  Cadena, BLOB in Flujo de error(stderr)
pid  Entero largo in Identificador único del proceso externo

El comando LAUNCH EXTERNAL PROCESS permite iniciar un proceso externo de 4D, bajo Mac OS X y Windows.
Bajo Mac OS X, este comando ofrece acceso a todas las aplicaciones ejecutables que puedan ser iniciadas desde el Terminal.

Pase en el parámetro nomArchivo la ruta de acceso de la aplicación a ejecutar, como también los argumentos requeridos (si es necesario).

Bajo Mac OS X, puede igualmente pasar únicamente el nombre de la aplicación a ejecutar; 4D utilizará entonces la variable del entorno PATH para ubicar el ejecutable.

Advertencia: este comando sólo puede iniciar aplicaciones ejecutables; no puede ejecutar instrucciones que hagan parte del shell (interprete de comandos). Por ejemplo, bajo Mac OS no es posible utilizar este comando para ejecutar la instrucción echo o las indirecciones.

El parámetro flujoEntrada (opcional) contiene el stdin del proceso externo. Una vez el comando haya sido ejecutado, los parámetro flujoSalida y flujoError (si se pasan) devuelven respectivamente el stdout y el tderr del proceso externo. Puede utilizar los parámetros de tipo BLOB en lugar de las cadenas de caracteres si maneja datos binarios (como imágenes).

Nota: si utiliza la variable del entorno _4D_OPTION_BLOCKING_EXTERNAL_PROCESS vía el comando SET ENVIRONMENT VARIABLE (ejecución asincrónica), los parámetros flujoSalida y flujoError no se devuelven.

Cuando se pasa, el parámetro pid (entero largo) devuelve el ID único del proceso creado para lanzar el comando, independientemente del estado de la opción _4D_OPTION_BLOCKING_EXTERNAL_PROCESS. Con esta información, es más fácil interactuar con los procesos externos creados por el comando, por ejemplo. para detenerlo. Si el lanzamiento del proceso falla, no se devuelve el parámetro pid.

Los siguientes ejemplos utilizan el Terminal Mac OS X, disponible en la carpeta Aplicaciones/Utilidades.

1. Para modificar los accesos a un archivo (chmod es el comando Mac OS X utilizado para modificar el acceso a los archivos):

 LAUNCH EXTERNAL PROCESS("chmod +x /carpeta/miarchivo.txt")

2. Para editar un archivo de tipo texto (cat es el comando Mac OS X utilizado para editar los archivos). En este ejemplo, se pasa la ruta de acceso completa del comando:

 C_TEXT(entrada;salida)
 entrada:=""
 LAUNCH EXTERNAL PROCESS("/bin/cat /carpeta/miarchivo.txt";entrada;salida)

3. Para obtener los contenidos de la carpeta “Usuarios” (ls -l es el equivalente Mac OS X del comando dir en DOS):

 C_TEXT($In;$Out)
 LAUNCH EXTERNAL PROCESS("/bin/ls -l /Usuarios";$In;$Out)

4. Para iniciar una aplicación "gráfica" independiente, es preferible utilizar el comando sistema open (en este caso, la instrucción LAUNCH EXTERNAL PROCESS tiene el mismo efecto que hacer doble clic en la aplicación): 

 LAUNCH EXTERNAL PROCESS("open /Applications/Calculator.app")

5. Para abrir NotePad:

 LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe")

6. Para abrir Notepad y abrir un documento específico:

 LAUNCH EXTERNAL PROCESS("C:\\WINDOWS\\notepad.exe C:\\Docs\\nueva carpeta\\res.txt")

7. Para iniciar la aplicación Microsoft® Word® y abrir un documento específico (Note el uso de las dos ""):

 $midoc:="C:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE \"C:\\Documents and
 Settings\\Macros\\Escritorio\\MisDocs\\Nuevacarpeta\\test.xml\""
 LAUNCH EXTERNAL PROCESS($midoc;$tIn;$tOut)

8. Para ejecutar un script Perl (es necesario ActivePerl):

 C_TEXT($entrada;$salida)
 SET ENVIRONMENT VARIABLE("mivariable";"valor")
 LAUNCH EXTERNAL PROCESS("D:\\Perl\\bin\\perl.exe D:\\Perl\\eg\\cgi\\env.pl";$entrada;$salida)

9. Para iniciar un comando con el directorio actual y sin mostrar la consola:

 SET ENVIRONMENT VARIABLE("_4D_OPTION_CURRENT_DIRECTORY";"C:\\4D_VCS")
 SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true")
 LAUNCH EXTERNAL PROCESS("micomando")

10. Para permitir al usuario abrir un documento externo en Windows:

 $nomdoc:=Select document("";"*.*";"Elija el archivo a abrir";0)
 If(OK=1)
    SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true")
    LAUNCH EXTERNAL PROCESS("cmd.exe /C start \"\" \""+document+"\"")
 End if
 

11. Los siguientes ejemplos recuperan la lista de procesos bajo Windows:

 C_LONGINT($pid)
 C_TEXT($stdin;$stdout;$stderr)
 
 LAUNCH EXTERNAL PROCESS("tasklist";$pid//gets PID only
 LAUNCH EXTERNAL PROCESS("tasklist";$stdin;$stdout;$stderr;$pid//obtener toda la información

Si el comando ha sido ejecutado correctamente, la variable sistema OK toma el valor 1. De lo contrario (archivo no encontrado, memoria insuficiente, etc.), toma el valor 0.



Ver también 

SET ENVIRONMENT VARIABLE

 
PROPIEDADES 

Producto: 4D
Tema: Herramientas
Número 811

Este comando modifica la variable sistema OK

 
HISTORIA 

Creado por: 4D 2004
Modificado: 4D v15 R4

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)