Guide de référence du langage d'Adobe® Flex® 4.1
Masquer la liste des packages et des classes |  Packages  |  Classes  |  Index  |  Annexes

Référence du langage uniquement        
flash.desktop 
NativeProcess 
Packageflash.desktop
Classepublic class NativeProcess
HéritageNativeProcess Inheritance EventDispatcher Inheritance Object

Version du langage: ActionScript 3.0
Versions du moteur d’exécution: AIR 2

La classe NativeProcess permet l’intégration de la ligne de commande et fournit des fonctionnalités de lancement générales. La classe NativeProcess permet à une application AIR d’exécuter des processus natifs sur le système d’exploitation hôte. L’application AIR peut contrôler le flux d’entrée standard (stdin), le flux de sortie standard (stdout), ainsi que le flux d’erreurs standard (stderr) du processus.

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. 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.

Consulter les exemples



Propriétés publiques
 PropriétéDéfini par
 Inheritedconstructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet.
Object
  AIR-only isSupported : Boolean
[statique] [lecture seule] Indique si l’exécution de processus natifs est prise en charge dans le profil actuel.
NativeProcess
 Inheritedprototype : Object
[statique] Référence à l’objet prototype d’un objet de classe ou fonction.
Object
  AIR-only running : Boolean
[lecture seule] Indique si ce processus natif est actuellement en cours d’exécution.
NativeProcess
  AIR-only standardError : IDataInput
[lecture seule] Permet l’accès à la sortie d’erreurs standard à partir de ce processus natif.
NativeProcess
  AIR-only standardInput : IDataOutput
[lecture seule] Permet d’accéder au flux d’entrée standard de ce processus natif.
NativeProcess
  AIR-only standardOutput : IDataInput
[lecture seule] Permet d’accéder au canal de sortie standard de ce processus natif.
NativeProcess
Méthodes publiques
 MéthodeDéfini par
  
Construit un objet NativeProcess non initialisé.
NativeProcess
 Inherited
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
 Inherited
Distribue un événement dans le flux d’événements.
EventDispatcher
  
AIR-only exit(force:Boolean = false):void
Tente de quitter le processus natif.
NativeProcess
 Inherited
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement.
EventDispatcher
 Inherited
Indique si la propriété spécifiée d’un objet est définie.
Object
 Inherited
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
 Inherited
Indique si la propriété spécifiée existe et est énumérable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Supprime un écouteur de l’objet EventDispatcher.
EventDispatcher
 Inherited
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
 Inherited
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur.
Object
 Inherited
Renvoie la représentation sous forme de chaîne de l’objet spécifié.
Object
 Inherited
Renvoie la valeur primitive de l’objet spécifié.
Object
 Inherited
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énements
 Evénement Synthèse Défini par
 Inherited[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active.EventDispatcher
 Inherited[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
Détails de la propriété
AIR-only 

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.



Implémentation
    public static function get isSupported():Boolean
AIR-only 

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
AIR-only 

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.

Voir aussi

AIR-only 

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é.

Voir aussi

AIR-only 

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.

Voir aussi

Détails du constructeur
AIR-only 

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.

Voir aussi

Détails de la méthode

AIR-only 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:IOErrorEvent — La fermeture du flux d’entrée sur le processus pose problème
 
standardInputClose:Event — Le flux d’entrée a été fermé.

AIR-only 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 force est défini sur false, cette méthode tente de quitter progressivement le processus natif. Cette méthode « demande » au processus natif de se terminer. Il est possible que le processus natif ignore cette requête ; par conséquent, cette méthode risque ne pas entraîner la fermeture du processus natif. L’objet NativeProcess distribue un événement NativeProcessExitEvent uniquement si le processus natif se ferme.

Si le paramètre force est défini sur true, cette méthode tente de quitter de force le processus natif. Appelez cette méthode en définissant le paramètre force sur true en dernier recours. Appeler cette méthode lorsque le paramètre force est défini sur true peut avoir des conséquences négatives sur l’état des ressources système associées au processus natif. Par exemple, les fichiers ouverts peuvent être laissés dans un état incorrect. Le moteur d’exécution fera son possible pour tenter de quitter de force le processus natif. Il se peut néanmoins qu’il soit impossible de quitter le processus natif. L’objet NativeProcess distribue un événement NativeProcessExitEvent uniquement s’il a été possible de quitter le processus natif.

S’il s’avère impossible de quitter le processus natif, il distribue un événement NativeProcessExitEvent.

AIR-only 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é.

Voir aussi

Détails de l’événement
AIR-only 

exit

Evénement
Type d’objet d’évé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.

AIR-only 

standardErrorClose

Evénement  
Type d’objet d’évé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.

AIR-only 

standardErrorData

Evénement  
Type d’objet d’évé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.

AIR-only 

standardErrorIoError

Evénement  
Type d’objet d’évé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.

AIR-only 

standardInputClose

Evénement  
Type d’objet d’évé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.

AIR-only 

standardInputIoError

Evénement  
Type d’objet d’évé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.

AIR-only 

standardInputProgress

Evénement  
Type d’objet d’évé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.

AIR-only 

standardOutputClose

Evénement  
Type d’objet d’évé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.

AIR-only 

standardOutputData

Evénement  
Type d’objet d’évé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.

AIR-only 

standardOutputIoError

Evénement  
Type d’objet d’évé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.

NativeProcessExample.as

L’exemple suivant vérifie si la communication du processus natif est prise en charge sur l’ordinateur. Le cas échéant, l’application définit des écouteurs d’événement pour le processus natif et exécute le fichier test.py dans le répertoire de l’application principale. :
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());
        }
    }
}
Ajoutez le script Python suivant à un fichier appelé test.py dans le répertoire de votre application (assurez-vous que Python est installé) :
 #!/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)