Guida di riferimento di ActionScript® 3.0 per la piattaforma Adobe® Flash®
Home  |  Nascondi elenco pacchetti e classi |  Pacchetti  |  Classi  |  Novità  |  Indice  |  Appendici  |  Perché in inglese?
Filtri: Recupero dati dal server...
Recupero dati dal server...
flash.desktop 

NativeProcess  - AS3

Pacchettoflash.desktop
Classepublic class NativeProcess
EreditarietàNativeProcess Inheritance EventDispatcher Inheritance Object

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

La classe NativeProcess fornisce funzionalità di avvio generale e di integrazione dalla riga di comando. La classe NativeProcess consente a un'applicazione AIR di eseguire processi nativi nel sistema operativo host. L'applicazione AIR può monitorare il flusso di input standard (stdin), il flusso di output standard (stdout), nonché il flusso di errore standard (stderr) del processo.

La classe NativeProcess e le relative funzionalità sono disponibili solo per le applicazioni AIR installate tramite un programma di installazione nativo (applicazioni nel profilo desktop esteso). Durante il debug, potete passare l'argomento -profile extendedDesktop ad ADL per attivare la funzionalità NativeProcess. In fase di runtime, potete controllare la proprietà NativeProcess.isSupported per determinare se è supportata la comunicazione dei processi nativi.

Supporto profili AIR: questa funzionalità è supportata nelle applicazioni distribuite nei sistemi operativi desktop tramite programmi di installazione nativi. Non è supportata nei dispositivi mobili o in AIR per i dispositivi TV. È possibile verificare se la funzionalità è supportata in fase runtime utilizzando la proprietà NativeProcess.isSupported. Per ulteriori informazioni sul supporto delle API tra più profili, vedete Supporto dei profili AIR.

Le applicazioni AIR installate con un programma di installazione nativo (applicazioni nel profilo desktop esteso) possono inoltre utilizzare File.openWithDefaultApplication per aprire un'applicazione. La classe NativeProcess consente tuttavia di accedere direttamente ai canali dei flussi di input, di output e di errore standard.

Nota: le applicazioni AIR per TV con il profilo extendedTV possono utilizzare le estensioni native per eseguire processi nativi. Analogamente, i dispositivi mobili possono utilizzare estensioni native.

Vedere gli esempi

Altri esempi

Elementi API correlati



Proprietà pubbliche
 ProprietàDefinito da
 Inheritedconstructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
Object
      isSupported : Boolean
[statico] [sola lettura] Indica se l'esecuzione dei processi nativi è supportata nel profilo corrente.
NativeProcess
      running : Boolean
[sola lettura] Indica se questo processo nativo è attualmente in esecuzione.
NativeProcess
      standardError : IDataInput
[sola lettura] Fornisce l'accesso al flusso di errore standard generato da questo processo nativo.
NativeProcess
      standardInput : IDataOutput
[sola lettura] Fornisce l'accesso all'input standard di questo processo nativo.
NativeProcess
      standardOutput : IDataInput
[sola lettura] Fornisce l'accesso al canale di output standard di questo processo nativo.
NativeProcess
Metodi pubblici
 MetodoDefinito da
  
    NativeProcess()
Costruisce un oggetto NativeProcess non inizializzato.
NativeProcess
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un oggetto listener di eventi con un oggetto EventDispatcher, in modo che il listener riceva la notifica di un evento.
EventDispatcher
  
    closeInput():void
Chiude il flusso di input in questo processo.
NativeProcess
 Inherited
Invia un evento nel flusso di eventi.
EventDispatcher
  
    exit(force:Boolean = false):void
Tenta di chiudere il processo nativo.
NativeProcess
 Inherited
Verifica se per l'oggetto EventDispatcher sono presenti listener registrati per un tipo specifico di evento.
EventDispatcher
 Inherited
Indica se per un oggetto è definita una proprietà specifica.
Object
 Inherited
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
Object
 Inherited
Indica se la proprietà specificata esiste ed è enumerabile.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Rimuove un listener dall'oggetto EventDispatcher.
EventDispatcher
 Inherited
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
Object
  
Avvia il processo nativo identificato dalle informazioni sull'avvio specificate.
NativeProcess
 Inherited
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate.
Object
 Inherited
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
Object
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
 Inherited
Verifica se un listener di eventi è registrato con questo oggetto EventDispatcher o qualsiasi suo antenato per il tipo di evento specificato.
EventDispatcher
Eventi
 Evento Riepilogo Definito da
 Inherited[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR ottiene lo stato di attivazione del sistema operativo ed entra nello stato attivo.EventDispatcher
 Inherited[evento di trasmissione] Inviato quando Flash Player o l'applicazione AIR perde l'attivazione del sistema operativo e sta entrando nello stato inattivo.EventDispatcher
  
    exit
Segnala che il processo nativo è stato chiuso.NativeProcess
  Segnala che NativeProcess ha chiuso il relativo flusso di errore.NativeProcess
  Segnala che nel flusso di errore standard (stderror) sono disponibili dati da leggere per il processo nativo.NativeProcess
  Segnala che la lettura dal flusso di errore standard (stderror) non è riuscita.NativeProcess
  Segnala che l'oggetto NativeProcess ha chiuso il relativo flusso di input chiamando il metodo closeInput().NativeProcess
  Segnala che la scrittura nel flusso di input standard (stdin) non è riuscita.NativeProcess
  Segnala che NativeProcess ha scritto dei dati nel flusso di input per il processo secondario.NativeProcess
  Segnala che NativeProcess ha chiuso il relativo flusso di output.NativeProcess
  Segnala che il processo nativo dispone di dati da leggere nel flusso di output.NativeProcess
  Segnala che la lettura dal flusso stdout non è riuscita.NativeProcess
Descrizione delle proprietà
    

isSupported

proprietà
isSupported:Boolean  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Indica se l'esecuzione dei processi nativi è supportata nel profilo corrente. Questa proprietà restituisce true solo quando i processi sono in esecuzione nel profilo extendedDesktop. Inoltre, NativeProcess.isSupported è sempre false per le applicazioni installate come file AIR. Dovete impacchettare un'applicazione AIR utilizzando il flag ADT -target native per utilizzare la classe NativeProcess.



Implementazione
    public static function get isSupported():Boolean
    

running

proprietà 
running:Boolean  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Indica se questo processo nativo è attualmente in esecuzione. Il processo è in esecuzione se avete chiamato il metodo start() e l'oggetto NativeProcess non ha ancora inviato un evento exit. Un'istanza NativeProcess corrisponde a un singolo processo nel sistema operativo sottostante. Questa proprietà rimane true finché il processo del sistema operativo sottostante è in esecuzione (mentre il processo nativo è in esecuzione e finché non restituisce un codice di uscita al sistema operativo).



Implementazione
    public function get running():Boolean
    

standardError

proprietà 
standardError:IDataInput  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Fornisce l'accesso al flusso di errore standard generato da questo processo nativo. Quando i dati diventano disponibili su questo canale, l'oggetto NativeProcess invia un oggetto ProgressEvent. Se tentate di leggere dati da questo flusso quando non sono disponibili dati, l'oggetto NativeProcess genera un'eccezione EOFError.

Il tipo è IDataInput poiché i dati vengono immessi dal punto di vista del processo corrente, anche se si tratta di un flusso di output del processo secondario.



Implementazione
    public function get standardError():IDataInput

Genera
EOFError — Se non sono presenti dati e si tenta un'operazione di lettura.

Elementi API correlati

    

standardInput

proprietà 
standardInput:IDataOutput  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Fornisce l'accesso all'input standard di questo processo nativo. Utilizzate questo canale per inviare dati a questo processo. Ogni volta che vengono scritti dati nella proprietà input, tali dati vengono scritti nel canale di input del processo nativo appena possibile.

Il tipo è IDataOutput poiché i dati vengono generati dal punto di vista del processo corrente, anche se si tratta di un flusso di input del processo secondario.



Implementazione
    public function get standardInput():IDataOutput

Genera
IllegalOperationError — Restituito durante la scrittura in questo valore quando running restituisce false o durante il tentativo di scrivere dati in un flusso di input chiuso.

Elementi API correlati

    

standardOutput

proprietà 
standardOutput:IDataInput  [sola lettura]

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Fornisce l'accesso al canale di output standard di questo processo nativo. Utilizzate questo canale per leggere i dati dall'output standard del processo nativo. Quando i dati sono disponibili su questo canale, l'oggetto NativeProcess invia un oggetto ProgressEvent. Se tentate di leggere dati da questo flusso quando non sono disponibili dati, l'oggetto NativeProcess genera un EOFError.

Il tipo è IDataInput poiché i dati vengono immessi dal punto di vista del processo corrente, anche se si tratta di un flusso di output del processo secondario.



Implementazione
    public function get standardOutput():IDataInput

Genera
EOFError — Se non sono presenti dati e si tenta un'operazione di lettura.

Elementi API correlati

Descrizione della funzione di costruzione
    

NativeProcess

()Funzione di costruzione
public function NativeProcess()

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Costruisce un oggetto NativeProcess non inizializzato. Chiamate il metodo start() per avviare il processo.

Elementi API correlati

Descrizione dei metodi

    closeInput

()metodo
public function closeInput():void

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Chiude il flusso di input in questo processo. Alcune applicazioni della riga di comando attendono che il flusso di input sia chiuso per avviare determinate operazioni. Dopo la chiusura del flusso, non potete riaprirlo finché il processo non viene chiuso e riavviato.


Eventi
ioErrorStandardInput:IOErrorEvent — Si è verificato un problema durante la chiusura del flusso di input del processo.
 
standardInputClose:Event — Il flusso di input è stato chiuso.

    exit

()metodo 
public function exit(force:Boolean = false):void

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Tenta di chiudere il processo nativo.

Parametri

force:Boolean (default = false) — Specifica se l'applicazione dovrà tentare di forzare la chiusura del processo nativo, se necessario.

Se il parametro force viene impostato su false, questo metodo tenta di chiudere normalmente il processo nativo. Questo metodo "chiede" al processo nativo di procedere alla chiusura. La richiesta può essere ignorata dal processo nativo e, di conseguenza, non è garantito che questo metodo ne causi l'effettiva chiusura. L'oggetto NativeProcess invia un evento NativeProcessExitEvent solo se il processo nativo viene chiuso.

Se il parametro force viene impostato su true, questo metodo tenta di procedere alla chiusura forzata del processo nativo. La chiamata a questo metodo con il parametro force impostato su true deve essere considerata l'ultima risorsa. La chiamata a questo metodo con il parametro force impostato su true potrebbe avere un impatto negativo sullo stato delle risorse del sistema associate al processo nativo. I file aperti potrebbero, ad esempio, essere lasciati in uno stato incoerente. Il runtime tenterà in ogni modo di provare a forzare la chiusura del processo nativo. Non è tuttavia garantito che tale processo venga chiuso. L'oggetto NativeProcess invia un evento NativeProcessExitEvent solo se il processo nativo viene chiuso.

Se NativeProcess non viene chiuso correttamente, invia un evento NativeProcessExitEvent.

    start

()metodo 
public function start(info:NativeProcessStartupInfo):void

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Avvia il processo nativo identificato dalle informazioni sull'avvio specificate. Una volta avviato il processo, verranno aperti tutti i flussi di input e output. Questo metodo viene restituito immediatamente dopo l'invio al sistema operativo della richiesta di avviare il processo specificato. Se il processo è attualmente in esecuzione, l'oggetto NativeProcess genera un'eccezione IllegalOperationError. Il processo è in esecuzione se la proprietà running dell'oggetto NativeProcess restituisce true. Se il sistema operativo non è in grado di avviare il processo, viene generato un evento Error.

Un'istanza NativeProcess corrisponde a un singolo processo nel sistema operativo sottostante. Se desiderate eseguire contemporaneamente più di un'istanza del processo del sistema operativo, potete creare un'istanza NativeProcess per ogni processo secondario.

Potete chiamare questo metodo ogni volta che la proprietà running dell'oggetto NativeProcess restituisce false. Ciò significa che l'oggetto NativeProcess può essere riutilizzato. In altre parole, potete costruire un'istanza NativeProcess, chiamare il metodo start(), attendere l'evento exit e quindi chiamare di nuovo il metodo start(). Potete utilizzare un oggetto NativeProcessStartupInfo diverso come parametro info nella successiva chiamata al metodo start().

La classe NativeProcess e le relative funzionalità sono disponibili solo per le applicazioni AIR installate tramite un programma di installazione nativo. Durante il debug, potete passare l'argomento -profile extendedDesktop ad ADL per attivare la funzionalità NativeProcess. Potete controllare la proprietà NativeProcess.isSupported per determinare se è supportata la comunicazione dei processi nativi.

Considerazioni importanti sulla sicurezza:

L'API NativeProcess permette di eseguire qualunque file eseguibile sul sistema dell'utente. Usate la massima attenzione quando create ed eseguite i comandi. Se qualunque parte di un comando da eseguire ha un'origine esterna, verificate attentamente che l'esecuzione del comando non presenti rischi per la sicurezza. Analogamente, la vostra applicazione AIR dovrà convalidare i dati passati a un processo in esecuzione.

Tuttavia, la convalida dell'input può risultare difficoltosa. Per evitare tali difficoltà, è meglio scrivere un'applicazione nativa (ad esempio un file EXE in Windows) che abbia API specifiche. Tali API devono elaborare solo i comandi specificamente richiesti dall'applicazione AIR. Ad esempio, l'applicazione nativa potrebbe accettare solo una serie limitata di istruzioni tramite il flusso di input standard.

In Windows, AIR non consente l'esecuzione diretta dei file .bat. I file .bat di Windows vengono infatti eseguiti dall'applicazione interprete dei comandi (cmd.exe). Quando chiamate un file .bat, questa applicazione provvede a interpretare gli argomenti passati al comando come applicazioni aggiuntive da avviare. Un'iniezione malevola di caratteri supplementari nella stringa di argomenti potrebbe causare l'esecuzione da parte di cmd.exe di un'applicazione dannosa o non sicura. Ad esempio, senza un'adeguata convalida dei dati, l'applicazione AIR potrebbe chiamare myBat.bat myArguments c:/evil.exe. L'interprete dei comandi avvierebbe l'applicazione evil.exe in aggiunta all'elaborazione del file batch.

Se chiamate il metodo start() con un file .bat, l'oggetto NativeProcess genera un'eccezione. La proprietà message dell'oggetto Error contiene la stringa "Errore #3219: impossibile avviare NativeProcess."

Parametri

info:NativeProcessStartupInfo — NativeProcessStartupInfo definisce le informazioni sulla modalità di avvio del processo nativo.


Genera
IllegalOperationError — Se NativeProcess è attualmente in esecuzione.
 
ArgumentError — Se la proprietà Path nativa di NativeProcessStartupInfo non esiste.
 
Error — Se NativeProcess non è stato avviato correttamente.

Elementi API correlati

Descrizione degli eventi
    

exit

Evento
Tipo di oggetto evento: flash.events.NativeProcessExitEvent
proprietà NativeProcessExitEvent.type = flash.events.NativeProcessExitEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che il processo nativo è stato chiuso. La proprietà exitCode contiene il valore che il processo restituisce al sistema operativo host all'uscita. Se l'applicazione AIR termina il processo chiamando il metodo exit() dell'oggetto NativeProcess, la proprietà exitCode viene impostata su NaN.

    

standardErrorClose

Evento  
Tipo di oggetto evento: flash.events.Event
proprietà Event.type = flash.events.Event

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che NativeProcess ha chiuso il relativo flusso di errore.

    

standardErrorData

Evento  
Tipo di oggetto evento: flash.events.ProgressEvent
proprietà ProgressEvent.type = flash.events.ProgressEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che nel flusso di errore standard (stderror) sono disponibili dati da leggere per il processo nativo. L'oggetto NativeProcess invia questo evento quando il processo secondario svuota il relativo flusso di errore standard o quando il buffer interno utilizzato per la comunicazione tra i processi è pieno. Evitate di scrivere codice dipendente dalle dimensioni di questo buffer interno, in quanto variano da una versione all'altra e tra sistemi operativi.

    

standardErrorIoError

Evento  
Tipo di oggetto evento: flash.events.IOErrorEvent
proprietà IOErrorEvent.type = flash.events.IOErrorEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che la lettura dal flusso di errore standard (stderror) non è riuscita. L'oggetto NativeProcess può inviare questo evento quando il runtime non è in grado di leggere i dati dal canale del flusso di errore standard del processo nativo.

    

standardInputClose

Evento  
Tipo di oggetto evento: flash.events.Event
proprietà Event.type = flash.events.Event

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che l'oggetto NativeProcess ha chiuso il relativo flusso di input chiamando il metodo closeInput(). L'oggetto NativeProcess non invia questo evento quando l'effettivo processo nativo chiude direttamente il flusso di input.

    

standardInputIoError

Evento  
Tipo di oggetto evento: flash.events.IOErrorEvent
proprietà IOErrorEvent.type = flash.events.IOErrorEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che la scrittura nel flusso di input standard (stdin) non è riuscita. L'oggetto NativeProcess invia questo evento quando il metodo closeInput() ha esito negativo o quando il runtime non è in grado di scrivere dati nel canale del flusso di input standard del processo nativo.

    

standardInputProgress

Evento  
Tipo di oggetto evento: flash.events.ProgressEvent
proprietà ProgressEvent.type = flash.events.ProgressEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che NativeProcess ha scritto dei dati nel flusso di input per il processo secondario. L'oggetto NativeProcess invia questo evento al momento della scrittura dei dati nel flusso. Questo evento non indica se il processo secondario ha letto o meno dei dati.

    

standardOutputClose

Evento  
Tipo di oggetto evento: flash.events.Event
proprietà Event.type = flash.events.Event

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che NativeProcess ha chiuso il relativo flusso di output.

    

standardOutputData

Evento  
Tipo di oggetto evento: flash.events.ProgressEvent
proprietà ProgressEvent.type = flash.events.ProgressEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che il processo nativo dispone di dati da leggere nel flusso di output. L'oggetto NativeProcess invia questo evento quando il processo secondario svuota il relativo flusso stdout o quando il buffer interno utilizzato per la comunicazione tra i processi è pieno. Evitate di scrivere codice dipendente dalle dimensioni di questo buffer interno, in quanto variano da una versione all'altra e tra sistemi operativi.

    

standardOutputIoError

Evento  
Tipo di oggetto evento: flash.events.IOErrorEvent
proprietà IOErrorEvent.type = flash.events.IOErrorEvent

Versione linguaggio: ActionScript 3.0
Versioni runtime: AIR 2

Segnala che la lettura dal flusso stdout non è riuscita. L'oggetto NativeProcess può inviare questo evento quando il runtime non è in grado di leggere i dati dal canale di output standard del processo nativo.

NativeProcessExample.as

L'esempio seguente consente di verificare se la comunicazione dei processi nativi è supportata nel computer locale. In caso affermativo, vengono configurati automaticamente i listener di eventi per il processo nativo e viene avviato il file test.py nella directory principale dell'applicazione. :
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());
        }
    }
}
Aggiungete il seguente script Python a un file di nome test.py nella directory dell'applicazione, assicurandovi che Python sia installato:
 #!/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)




[ X ]Perché in inglese?
Il contenuto della Guida di riferimento di ActionScript 3.0 appare in inglese

Non tutte le parti della Guida di riferimento di ActionScript 3.0 sono tradotte in tutte le lingue. Quando un elemento del linguaggio non è tradotto, viene riportato in inglese. Ad esempio, la classe ga.controls.HelpBox non è tradotta in nessuna lingua. Pertanto, nella versione italiana della guida di riferimento, la descrizione della classe ga.controls.HelpBox è riportata in inglese.