Package | flash.desktop |
Classe | public class NativeProcess |
Héritage | NativeProcess EventDispatcher Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
La classe NativeProcess et ses fonctionnalités sont disponibles uniquement sur des applications AIR installées avec un programme d’installation natif (applications dotées d’un profil étendu de bureau). Lors du débogage, vous pouvez transmettre l’argument -profile extendedDesktop
à l’application de débogage du lanceur AIR (ADL) pour activer la fonctionnalité NativeProcess. Lors de l’exécution, vous pouvez vérifier la propriété NativeProcess.isSupported
pour déterminer si la communication du processus natif est prise en charge.
Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur les applications déployées sur des systèmes d’exploitation de bureau via des programmes d’installation natifs. Cette fonctionnalité n’est pas prise en charge sur les périphériques mobiles ou sur les périphériques AIR pour TV. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété NativeProcess.isSupported
. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.
Les applications AIR installées avec un programme d’installation natif (applications dotées d’un profil étendu de bureau) peuvent également utiliser File.openWithDefaultApplication
pour ouvrir une application. Toutefois, la classe NativeProcess fournit un accès direct aux canaux flux d’entrée standard, flux de sortie standard et flux d’erreurs standard.
Remarque : les applications AIR pour TV faisant appel au profil extendedTV
peuvent utiliser les extensions natives pour exécuter des processus natifs. De même, les périphériques mobiles peuvent utiliser des extensions natives.
Plus d’exemples
Native extensions versus the NativeProcess ActionScript class
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
isSupported : Boolean [statique] [lecture seule]
Indique si l’exécution de processus natifs est prise en charge dans le profil actuel. | NativeProcess | ||
running : Boolean [lecture seule]
Indique si ce processus natif est actuellement en cours d’exécution. | NativeProcess | ||
standardError : IDataInput [lecture seule]
Permet l’accès à la sortie d’erreurs standard à partir de ce processus natif. | NativeProcess | ||
standardInput : IDataOutput [lecture seule]
Permet d’accéder au flux d’entrée standard de ce processus natif. | NativeProcess | ||
standardOutput : IDataInput [lecture seule]
Permet d’accéder au canal de sortie standard de ce processus natif. | NativeProcess |
Méthode | Défini par | ||
---|---|---|---|
Construit un objet NativeProcess non initialisé. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Ferme le flux d’entrée sur ce processus. | NativeProcess | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
Tente de quitter le processus natif. | NativeProcess | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Démarre le processus natif identifié par les informations de lancement spécifiées. | NativeProcess | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher |
Evénement | Synthèse | Défini par | ||
---|---|---|---|---|
[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active. | EventDispatcher | |||
[Evénement de diffusion] Distribué lorsque l’application Flash Player ou AIR perd le focus du système d’exploitation et devient inactive. | EventDispatcher | |||
Signale que le processus natif a été finalisé. | NativeProcess | |||
Signale que l’objet NativeProcess a fermé son flux d’erreurs. | NativeProcess | |||
Signale que le processus natif a des données à lire sur le flux d’erreurs standard (stderror). | NativeProcess | |||
Signale que la lecture du flux d’erreurs standard (stderror) a échoué. | NativeProcess | |||
Signale que l’objet NativeProcess a fermé son flux d’entrée en appelant la méthode closeInput(). | NativeProcess | |||
Signale que l’écriture dans le flux d’entrée standard (stdin) a échoué. | NativeProcess | |||
Signale que l’objet NativeProcess a écrit des données dans le flux d’entrée pour le processus enfant. | NativeProcess | |||
Signale que l’objet NativeProcess a fermé son flux de sortie. | NativeProcess | |||
Signale que le processus natif a des données à lire sur le flux de sortie. | NativeProcess | |||
Signale que la lecture du flux de sortie standard (stdout) a échoué. | NativeProcess |
isSupported | propriété |
isSupported:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Indique si l’exécution de processus natifs est prise en charge dans le profil actuel. Cette propriété renvoie true
uniquement lorsqu’elle est exécutée dans le profil de bureau étendu. En outre, NativeProcess.isSupported
est toujours false
pour les applications installées comme un fichier AIR. Vous devez mettre en package une application AIR à l’aide de l’indicateur -target native
d’ADT pour pouvoir utiliser la classe NativeProcess.
Implémentation
public static function get isSupported():Boolean
running | propriété |
running:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Indique si ce processus natif est actuellement en cours d’exécution. Le processus est en cours d’exécution si vous avez appelé la méthode start()
et si l’objet NativeProcess n’a pas encore distribué d’événement exit
. Une occurrence de NativeProcess correspond à un processus unique sur le système d’exploitation sous-jacent. Cette propriété reste true
à condition que le processus du système d’exploitation sous-jacent soit en cours d’exécution (lors du lancement du processus natif et jusqu’à ce que ce dernier renvoie un code de sortie au système d’exploitation).
Implémentation
public function get running():Boolean
standardError | propriété |
standardError:IDataInput
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Permet l’accès à la sortie d’erreurs standard à partir de ce processus natif. Lorsque les données sont disponibles sur ce canal, l’objet NativeProcess distribue un objet ProgressEvent. Si vous tentez de lire les données à partir de ce flux alors qu’aucune donnée n’est disponible, l’objet NativeProcess renvoie une exception EOFError.
Le type est IDataInput, car l’entrée des données est considérée depuis la perspective du processus en cours, même s’il s’agit d’un flux de sortie du processus enfant.
Implémentation
public function get standardError():IDataInput
Valeur émise
EOFError — en cas de tentative de lecture alors qu’aucune donnée n’est disponible.
|
Eléments de l’API associés
standardInput | propriété |
standardInput:IDataOutput
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Permet d’accéder du flux d’entrée standard de ce processus natif. Utilisez ce canal pour envoyer des données à ce processus. Chaque fois que des données sont écrites dans la propriété input
, elles sont écrites dès que possible dans le canal d’entrée du processus natif.
Le type est IDataOutput, car la sortie des données est considérée depuis la perspective du processus en cours, même s’il s’agit d’un flux d’entrée du processus enfant.
Implémentation
public function get standardInput():IDataOutput
Valeur émise
IllegalOperationError — si vous écrivez dans cette valeur lorsque running renvoie false ou lorsque vous tentez d’écrire des données dans un flux d’entrée fermé.
|
Eléments de l’API associés
standardOutput | propriété |
standardOutput:IDataInput
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Permet d’accéder au canal de sortie standard de ce processus natif. Utilisez ce canal pour lire les données depuis la sortie standard du processus natif. Lorsque ce canal contient des données, l’objet NativeProcess distribue un événement ProgressEvent. Si vous tentez de lire les données à partir de ce flux alors qu’aucune donnée n’est disponible, l’objet NativeProcess renvoie une exception EOFError.
Le type est IDataInput, car l’entrée des données est considérée depuis la perspective du processus en cours, même s’il s’agit d’un flux de sortie du processus enfant.
Implémentation
public function get standardOutput():IDataInput
Valeur émise
EOFError — en cas de tentative de lecture alors qu’aucune donnée n’est disponible.
|
Eléments de l’API associés
NativeProcess | () | Constructeur |
public function NativeProcess()
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Construit un objet NativeProcess non initialisé. Appelez la méthode start()
pour démarrer le processus.
Eléments de l’API associés
closeInput | () | méthode |
public function closeInput():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Ferme le flux d’entrée sur ce processus. Certaines applications de ligne de commande attendent que le flux d’entrée soit interrompu pour lancer certaines opérations. Une fois que le flux est fermé, il ne peut pas être rouvert tant que le processus n’existe pas et n’est pas à nouveau lancé.
Evénements
ioErrorStandardInput: — La fermeture du flux d’entrée sur le processus pose problème
| |
standardInputClose: — Le flux d’entrée a été fermé.
|
exit | () | méthode |
public function exit(force:Boolean = false):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Tente de quitter le processus natif.
Paramètres
force:Boolean (default = false ) — Indique si l’application doit tenter de quitter de force le processus natif, le cas échéant.
Si le paramètre Si le paramètre S’il s’avère impossible de quitter le processus natif, il distribue un événement |
start | () | méthode |
public function start(info:NativeProcessStartupInfo):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Démarre le processus natif identifié par les informations de lancement spécifiées. Une fois que le processus démarre, tous les flux d’entrée et de sortie sont ouverts. Cette méthode est immédiatement renvoyée après avoir sollicité le lancement du processus natif auprès du système d’exploitation. L’objet NativeProcess renvoie une exception IllegalOperationError
si le processus est en cours d’exécution. Le processus est en cours d’exécution si la propriété running
de l’objet NativeProcess renvoie true
. Si le système d’exploitation ne parvient pas à lancer le processus, un événement error
est renvoyé.
Une occurrence de NativeProcess correspond à un processus unique sur le système d’exploitation sous-jacent. Si vous souhaitez exécuter simultanément plusieurs occurrences du même processus sur le système d’exploitation, vous devez créer une occurrence de NativeProcess par processus enfant.
Vous pouvez appeler cette méthode chaque fois que la propriété running
de l’objet NativeProcess renvoie false
. Cela signifie que l’objet NativeProcess peut être réutilisé. En d’autres termes, vous pouvez créer une occurrence de NativeProcess, appeler la méthode start()
, attendre l’événement exit
, puis rappeler la méthode start()
. Vous pouvez utiliser un objet NativeProcessStartupInfo différent comme valeur du paramètre info
lors de l’appel suivant de la méthode start()
.
La classe NativeProcess et ses fonctionnalités sont disponibles uniquement sur des applications AIR installées avec un programme d’installation natif. Lors du débogage, vous pouvez transmettre l’argument -profile extendedDesktop
à l’application de débogage du lanceur AIR (ADL) pour activer la fonctionnalité NativeProcess. Vérifiez la propriété NativeProcess.isSupported
pour déterminer si la communication du processus natif est prise en charge.
Consignes de sécurité importantes :
L’API du processus natif peut lancer tout fichier exécutable sur le système de l’utilisateur. Prenez un soin extrême lorsque vous générez et exécutez des commandes. Si l’une des parties d’une commande à exécuter provient d’une source externe, vérifiez bien qu’il est possible d’exécuter la commande en toute sécurité. De même, votre application AIR doit valider les données transmises à un processus en cours.
Il peut néanmoins s’avérer difficile de vérifier la source d’entrée. Pour éviter de telles difficultés, il est préférable d’écrire une application native (par exemple un fichier EXE sous Windows) qui dispose d’API spécifiques. Ces API doivent traiter uniquement les commandes requises expressément par l’application AIR. Par exemple, il est possible que l’application n’accepte qu’un nombre limité d’instructions via le flux d’entrée standard.
L’application AIR sous Windows ne vous autorise pas à exécuter des fichiers .bat directement. Les fichiers .bat Windows sont exécutés par l’interpréteur de commande (cmd.exe). Lorsque vous appelez un fichier .bat, cette application de commande peut interpréter les arguments transmis à la commande comme d’autres applications à lancer. Si des caractères supplémentaires sont ajoutés de façon malintentionnée dans la chaîne d’arguments, le fichier cmd.exe risque d’exécuter une application nuisible ou non sécurisée. Par exemple, si les données ne sont pas correctement validées, votre application AIR peut appeler myBat.bat myArguments c:/mal.exe
. Dans ce cas, l’application de commande lance l’application evil.exe en même temps qu’elle exécute votre fichier de commandes.
Si vous appelez la méthode start()
avec un fichier .bat, l’objet NativeProcess renvoie une exception. La propriété message
de l’objet Error contient la chaîne "Erreur #3219 : le processus natif pas pu être démarré".
Paramètres
info:NativeProcessStartupInfo — NativeProcessStartupInfo Informations indiquant comment lancer le processus natif.
|
Valeur émise
IllegalOperationError — si le processus natif est en cours d’exécution.
| |
ArgumentError — si la propriété nativePath de la classe NativeProcessStartupInfo n’existe pas.
| |
Error — si le processus natif n’a pas été correctement lancé.
|
Eléments de l’API associés
exit | Evénement |
flash.events.NativeProcessExitEvent
propriété NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que le processus natif a été finalisé. La propriété exitCode
contient la valeur que le processus renvoie au système d’exploitation hôte à la fermeture. Si l’application AIR met fin au processus en appelant la méthode exit()
de l’objet NativeProcess, la propriété exitCode
est définie sur NaN.
standardErrorClose | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que l’objet NativeProcess a fermé son flux d’erreurs.
standardErrorData | Evénement |
flash.events.ProgressEvent
propriété ProgressEvent.type =
flash.events.ProgressEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que le processus natif a des données à lire sur le flux d’erreurs standard (stderror). L’objet NativeProcess distribue cet événement lorsque le processus enfant efface son flux d’erreurs standard ou lorsque la mémoire tampon interne utilisée pour la communication entre les processus est pleine. N’écrivez pas du code qui dépend de la taille de cette mémoire tampon interne, car cette taille varie selon les versions et les systèmes d’exploitation.
standardErrorIoError | Evénement |
flash.events.IOErrorEvent
propriété IOErrorEvent.type =
flash.events.IOErrorEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que la lecture du flux d’erreurs standard (stderror) a échoué. L’objet NativeProcess peut distribuer cet événement si le moteur d’exécution ne parvient pas à lire les données depuis le canal de sortie standard du processus natif.
standardInputClose | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que l’objet NativeProcess a fermé son flux d’entrée en appelant la méthode closeInput()
. L’objet NativeProcess ne distribue pas cet événement lorsque le processus natif actuel ferme lui-même le flux d’entrée.
standardInputIoError | Evénement |
flash.events.IOErrorEvent
propriété IOErrorEvent.type =
flash.events.IOErrorEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que l’écriture dans le flux d’entrée standard (stdin) a échoué. L’objet NativeProcess distribue cet événement lorsque la méthode closeInput()
échoue ou lorsque le moteur d’exécution ne parvient pas à écrire des données dans le canal d’entrée standard du processus natif.
standardInputProgress | Evénement |
flash.events.ProgressEvent
propriété ProgressEvent.type =
flash.events.ProgressEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que l’objet NativeProcess a écrit des données dans le flux d’entrée pour le processus enfant. L’objet NativeProcess distribue cet événement lorsque les données sont écrites dans le flux. Cet événement n’indique pas si le processus enfant a lu les données.
standardOutputClose | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que l’objet NativeProcess a fermé son flux de sortie.
standardOutputData | Evénement |
flash.events.ProgressEvent
propriété ProgressEvent.type =
flash.events.ProgressEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que le processus natif a des données à lire sur le flux de sortie. L’objet NativeProcess distribue cet événement lorsque le processus enfant efface son flux de sortie standard ou lorsque la mémoire tampon interne utilisée pour la communication entre les processus est pleine. N’écrivez pas du code qui dépend de la taille de cette mémoire tampon interne, car cette taille varie selon les versions et les systèmes d’exploitation.
standardOutputIoError | Evénement |
flash.events.IOErrorEvent
propriété IOErrorEvent.type =
flash.events.IOErrorEvent
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Signale que la lecture du flux de sortie standard (stdout) a échoué. L’objet NativeProcess peut distribuer cet événement si le moteur d’exécution ne parvient pas à lire les données depuis le canal de sortie standard du processus natif.
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, 09:30 AM Z