Paquete | flash.desktop |
Clase | public class NativeProcess |
Herencia | NativeProcess EventDispatcher Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
La clase NativeProcess y sus capacidades sólo están disponibles en aplicaciones de AIR instaladas con un archivo de instalación nativo (aplicaciones de perfil de escritorio ampliado). Durante la depuración, puede transferir el argumento -profile extendedDesktop
a ADL para activar la funcionalidad NativeProcess. En tiempo de ejecución, puede comprobar la propiedad NativeProcess.isSupported
para determinar si se admite el proceso de comunicación nativo.
Compatibilidad con perfil de AIR: esta característica se admite en las aplicaciones implementadas en sistemas operativos de escritorio a través programas de instalación nativos. La función no se admite en dispositivos móviles ni en dispositivos de AIR para TV. Puede comprobar la compatibilidad en tiempo de ejecución mediante la propiedad NativeProcess.isSupported
. Consulte Compatibilidad con perfil de AIR para obtener información sobre la compatibilidad de la API con varios perfiles.
Las aplicaciones de AIR instaladas con un instalador nativo (aplicaciones de perfil de escritorio ampliado) también pueden utilizar archivo.openWithDefaultApplication
para abrir una aplicación. Sin embargo, la clase NativeProcess proporciona acceso directo a los canales de entrada estándar, salida estándar y error estándar.
Nota: las aplicaciones de AIR para TV que utilicen el perfil extendedTV
pueden utilizar extensiones nativas de para ejecutar procesos nativos. De forma similar, los dispositivos móviles pueden utilizar extensiones nativas.
Más ejemplos
Elementos de API relacionados
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
isSupported : Boolean [estática] [solo lectura]
Indica si la ejecución de procesos nativos se admite en el perfil actual. | NativeProcess | ||
running : Boolean [solo lectura]
Indica si este proceso nativo se esté ejecutando. | NativeProcess | ||
standardError : IDataInput [solo lectura]
Proporciona acceso a la salida de error estándar desde este proceso nativo. | NativeProcess | ||
standardInput : IDataOutput [solo lectura]
Proporciona acceso a la entrada estándar de este proceso nativo. | NativeProcess | ||
standardOutput : IDataInput [solo lectura]
Proporciona acceso al canal de salida estándar de este proceso nativo. | NativeProcess |
Método | Definido por | ||
---|---|---|---|
Construye un objeto NativeProcess sin inicializar. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Cierra el flujo de entrada en este proceso. | NativeProcess | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Intenta salir del proceso nativo. | NativeProcess | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Inicia el proceso nativo identificado por la información de inicio especificada. | NativeProcess | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher | |||
Indica que se ha salido del proceso nativo. | NativeProcess | |||
Indica que el objeto NativeProcess ha cerrado su flujo de error. | NativeProcess | |||
Indica que el proceso nativo tiene datos disponibles para leer en el flujo de error estándar (stderror). | NativeProcess | |||
Indica que lectura desde el flujo de error estándar (stderror) ha fallado. | NativeProcess | |||
Indica que el objeto NativeProcess ha cerrado su flujo de entrada mediante una llamada al método closeInput(). | NativeProcess | |||
Indica que la escritura en el flujo de entrada estándar (stdin) ha fallado. | NativeProcess | |||
Indica que el objeto NativeProcess ha escrito datos en el flujo de entrada para el proceso secundario. | NativeProcess | |||
Indica que el objeto NativeProcess ha cerrado su flujo de salida. | NativeProcess | |||
Indica que el proceso nativo tiene datos disponibles para leer en el flujo de salida. | NativeProcess | |||
Indica que la lectura desde el flujo stdout ha fallado. | NativeProcess |
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica si la ejecución de procesos nativos se admite en el perfil actual. Esta propiedad devuelve true
sólo cuando se ejecuta en el perfil extendedDesktop. Además, NativeProcess.isSupported
es siempre false
para las aplicaciones instaladas como archivo de AIR. Debe empaquetar una aplicación de AIR con el indicador ADT -target native
para utilizar la clase NativeProcess.
Implementación
public static function get isSupported():Boolean
running | propiedad |
running:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica si este proceso nativo se esté ejecutando. El proceso se está ejecutando si ha llamado al método start()
y el objeto NativeProcess aún no ha distribuido un evento exit
. Una instancia de NativeProcess corresponde a un solo proceso en el sistema operativo subyacente. Esta propiedad permanece como true
siempre y cuando el proceso del sistema operativo subyacente se esté ejecutando (mientras el proceso nativo se inicia y hasta que el proceso devuelve un código de salida al el sistema operativo.)
Implementación
public function get running():Boolean
standardError | propiedad |
standardError:IDataInput
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Proporciona acceso a la salida de error estándar desde este proceso nativo. A medida que los datos quedan disponibles en este canal, el objeto NativeProcess distribuye un objeto ProgressEvent. Si intenta leer datos desde este flujo cuando no hay datos disponibles, el objeto NativeProcess emite una excepción EOFError.
El tipo es IDataInput ya que los datos entran desde la perspectiva del proceso actual, aunque se trate de un flujo de salida del proceso secundario.
Implementación
public function get standardError():IDataInput
Emite
EOFError — si no hay datos presentes y se intenta una operación de lectura.
|
Elementos de API relacionados
standardInput | propiedad |
standardInput:IDataOutput
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Proporciona acceso a la entrada estándar de este proceso nativo. Utilice este canal para enviar datos a este proceso. Cada vez que se escriben datos en la propiedad input
los datos se escriben en el canal de entrada del proceso nativo tan pronto como se pueda.
El tipo es IDataOutput ya que los datos salen desde la perspectiva del proceso actual, aunque se trate de un flujo de entrada del proceso secundario.
Implementación
public function get standardInput():IDataOutput
Emite
IllegalOperationError — cuando se escribe este valor si running devuelve false o cuando se intenta escribir datos en un flujo de entrada cerrado.
|
Elementos de API relacionados
standardOutput | propiedad |
standardOutput:IDataInput
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Proporciona acceso al canal de salida estándar de este proceso nativo. Utilice este canal para leer datos desde la salida estándar del proceso nativo. Cuando los datos están presentes en este canal, el objeto NativeProcess distribuye un evento ProgressEvent. Si intenta leer datos desde este flujo cuando no hay datos disponibles, el objeto NativeProcess emite una excepción EOFError.
El tipo es IDataInput ya que los datos entran desde la perspectiva del proceso actual, aunque se trate de un flujo de salida del proceso secundario.
Implementación
public function get standardOutput():IDataInput
Emite
EOFError — si no hay datos presentes y se intenta una operación de lectura.
|
Elementos de API relacionados
NativeProcess | () | Información sobre |
public function NativeProcess()
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Construye un objeto NativeProcess sin inicializar. Llame al método start()
para iniciar el proceso.
Elementos de API relacionados
closeInput | () | método |
public function closeInput():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Cierra el flujo de entrada en este proceso. Algunas aplicaciones línea de comandos esperan hasta que el flujo de entrada se cierre para iniciar algunas operaciones. Una vez cerrado el flujo, no se puede volver a abrir hasta que el proceso termina y se inicia otra vez.
Eventos
ioErrorStandardInput: — Hay un problema al cerrar el flujo de entrada en el proceso
| |
standardInputClose: — El flujo de entrada se ha cerrado.
|
exit | () | método |
public function exit(force:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Intenta salir del proceso nativo.
Parámetros
force:Boolean (default = false ) — Si la aplicación debe intentar salir obligatoriamente del proceso nativo, si es necesario.
Si el parámetro Si el parámetro Si se sale correctamente del proceso NativeProcess, se distribuye un evento |
start | () | método |
public function start(info:NativeProcessStartupInfo):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Inicia el proceso nativo identificado por la información de inicio especificada. Una vez iniciado el proceso, todos los flujos entrada y salida se abren. Este método se devuelve inmediatamente después de realizar la petición para iniciar el proceso especificado en el sistema operativo. El objeto NativeProcess emite una excepción IllegalOperationError
si el proceso se está ejecutando. El proceso se ejecuta si la propiedad running
del objeto NativeProcess devuelve true
. Si el sistema operativo no puede iniciar el proceso, se emite un error
.
Una instancia de NativeProcess corresponde a un solo proceso en el sistema operativo subyacente. Si desea ejecutar más de una instancia del mismo proceso de sistema operativo al mismo tiempo puede crear una instancia de NativeProcess por proceso secundario.
Puede llamar a este método siempre que la propiedad running
del objeto NativeProcess devuelva false
. Esto significa que el objeto NativeProcess se puede reutilizar. En otras palabras, puede construir una instancia de NativeProcess, llamar al método start()
, esperar al evento exit
y, a continuación, volver a llamar al método start()
. Puede utilizar un objeto NativeProcessStartupInfo diferente como el valor del parámetro info
en la segunda llamada al método start()
.
La clase NativeProcess y sus capacidades sólo están disponibles en aplicaciones de AIR instaladas con un instalador nativo. Durante la depuración, puede transferir el argumento -profile extendedDesktop
a ADL para activar la funcionalidad NativeProcess. Puede comprobar la propiedad NativeProcess.isSupported
para determinar si se admite el proceso de comunicación nativo.
Consideraciones importantes de seguridad:
La API del proceso nativo puede ejecutar cualquier ejecutable en el sistema del usuario. Debe tener mucho cuidado al construir y ejecutar comandos. Si algún fragmento de un comando que se ejecuta viene desde un origen externo, compruebe atentamente que es seguro ejecutar dicho comando. Asimismo, la aplicación de AIR debe validar datos transferidos a un proceso en ejecución.
Sin embargo, validar los datos entrantes puede resultar difícil. Para evitar esta dificultad, es mejor escribir una aplicación nativa (como un archivo EXE en Windows) con API específicas. Estas API deben procesar sólo dichos comandos específicamente requeridos por la aplicación de AIR. Por ejemplo, la aplicación nativa sólo puede aceptar una serie limitada de instrucciones a través de la secuencia de entrada estándar.
En Windows, AIR no le permite ejecutar archivos .bat directamente. Los archivos .bat de Windows se ejecutan con la aplicación intérprete de comandos (cmd.exe). Cuando se invoca un archivo .bat, esta aplicación de comandos puede interpretar argumentos que se transfieren al comando como aplicaciones adicionales para iniciar. La presencia maliciosa de caracteres adicionales en la cadena del argumento puede provocar que un cmd.exe ejecute una aplicación insegura o dañina. Por ejemplo, sin una validación adecuada de datos, la aplicación de AIR puede llamar a myBat.bat myArguments c:/diablo.exe
. La aplicación de comandos iniciaría la aplicación diablo.exe además de ejecutar el archivo por lotes.
Si llama al método start()
con un archivo .bat, el objeto NativeProcess emite una excepción. La propiedad message
del objeto Error contiene la cadena "Error #3219: No se pudo iniciar NativeProcess".
Parámetros
info:NativeProcessStartupInfo — NativeProcessStartupInfo Define información sobre el modo de iniciar el proceso nativo.
|
Emite
IllegalOperationError — si NativeProcess se está ejecutando en ese momento.
| |
ArgumentError — si la propiedad nativePath de NativeProcessStartupInfo no existe.
| |
Error — si NativeProcess no se ha iniciado correctamente.
|
Elementos de API relacionados
exit | Evento |
flash.events.NativeProcessExitEvent
propiedad NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que se ha salido del proceso nativo. La propiedad exitCode
contiene el valor que el proceso devuelve al sistema operativo del host al salir. Si la aplicación de AIR finaliza el proceso llamando al método exit()
del objeto NativeProcess, la propiedad exitCode
se establece en NaN.
standardErrorClose | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el objeto NativeProcess ha cerrado su flujo de error.
standardErrorData | Evento |
flash.events.ProgressEvent
propiedad ProgressEvent.type =
flash.events.ProgressEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el proceso nativo tiene datos disponibles para leer en el flujo de error estándar (stderror). El objeto NativeProcess distribuye este evento cuando el proceso secundario libera su flujo de error estándar o cuando el búfer interno utilizado para comunicarse entre los procesos está lleno. No escriba código que dependa del tamaño de este búfer interno; varía entre las distintas versiones y sistemas operativos.
standardErrorIoError | Evento |
flash.events.IOErrorEvent
propiedad IOErrorEvent.type =
flash.events.IOErrorEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que lectura desde el flujo de error estándar (stderror) ha fallado. El objeto NativeProcess puede distribuir este evento cuando el motor de ejecución no puede leer datos del canal de error estándar del proceso nativo.
standardInputClose | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el objeto NativeProcess ha cerrado su flujo de entrada mediante una llamada al método closeInput()
. El objeto NativeProcess no distribuye este evento cuando el propio proceso nativo real cierra el flujo de entrada.
standardInputIoError | Evento |
flash.events.IOErrorEvent
propiedad IOErrorEvent.type =
flash.events.IOErrorEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que la escritura en el flujo de entrada estándar (stdin) ha fallado. El objeto NativeProcess distribuye este evento cuando el método closeInput()
falla o si el motor de ejecución no puede escribir datos en el canal de entrada estándar del proceso nativo.
standardInputProgress | Evento |
flash.events.ProgressEvent
propiedad ProgressEvent.type =
flash.events.ProgressEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el objeto NativeProcess ha escrito datos en el flujo de entrada para el proceso secundario. El objeto NativeProcess distribuye este evento cuando se escriben datos en el flujo. Este evento no indica si el proceso secundario ha leído alguno de los datos.
standardOutputClose | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el objeto NativeProcess ha cerrado su flujo de salida.
standardOutputData | Evento |
flash.events.ProgressEvent
propiedad ProgressEvent.type =
flash.events.ProgressEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que el proceso nativo tiene datos disponibles para leer en el flujo de salida. El objeto NativeProcess distribuye este evento cuando el proceso secundario libera su flujo stdout o cuando el búfer interno utilizado para comunicarse entre los procesos está lleno. No escriba código que dependa del tamaño de este búfer interno; varía entre las distintas versiones y sistemas operativos.
standardOutputIoError | Evento |
flash.events.IOErrorEvent
propiedad IOErrorEvent.type =
flash.events.IOErrorEvent
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
Indica que la lectura desde el flujo stdout ha fallado. El objeto NativeProcess puede distribuir este evento cuando el motor de ejecución no puede leer datos del canal de salida estándar del proceso nativo.
package { import flash.display.Sprite; import flash.desktop.NativeProcess; import flash.desktop.NativeProcessStartupInfo; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.events.NativeProcessExitEvent; import flash.filesystem.File; public class NativeProcessExample extends Sprite { public var process:NativeProcess; public function NativeProcessExample() { if(NativeProcess.isSupported) { setupAndLaunch(); } else { trace("NativeProcess not supported."); } } public function setupAndLaunch():void { var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); var file:File = File.applicationDirectory.resolvePath("test.py"); nativeProcessStartupInfo.executable = file; var processArgs:Vector.<String> = new Vector.<String>(); processArgs[0] = "foo"; nativeProcessStartupInfo.arguments = processArgs; process = new NativeProcess(); process.start(nativeProcessStartupInfo); process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData); process.addEventListener(NativeProcessExitEvent.EXIT, onExit); process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError); process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError); } public function onOutputData(event:ProgressEvent):void { trace("Got: ", process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable)); } public function onErrorData(event:ProgressEvent):void { trace("ERROR -", process.standardError.readUTFBytes(process.standardError.bytesAvailable)); } public function onExit(event:NativeProcessExitEvent):void { trace("Process exited with ", event.exitCode); } public function onIOError(event:IOErrorEvent):void { trace(event.toString()); } } }
#!/usr/bin/python
# ------------------------------------------------------------------------------
# Sample Python script
# ------------------------------------------------------------------------------
import sys
for word in sys.argv: #echo the command line arguments
print word
print "HI FROM PYTHON"
print "Enter user name"
line = sys.stdin.readline()
sys.stdout.write("hello," + line)
Tue Jun 12 2018, 02:12 PM Z