Paket | flash.desktop |
Klasse | public class NativeProcess |
Vererbung | NativeProcess EventDispatcher Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Die NativeProcess-Klasse und ihre Fähigkeiten stehen nur AIR-Anwendungen zur Verfügung, die mit einem nativen Installationsprogramm installiert wurden (Anwendungen mit dem Profil „erweiterter Desktop“). Beim Debugging können Sie das -profile extendedDesktop
-Argument an ADL übergeben, um die NativeProcess-Funktionalität zu aktivieren. Zur Laufzeit können Sie die NativeProcess.isSupported
-Eigenschaft überprüfen, um festzustellen, ob die native Prozesskommunikation unterstützt wird.
Unterstützung von AIR-Profilen: Diese Funktion wird von Anwendungen unterstützt, die über native Installer unter Desktopbetriebssystemen bereitgestellt werden. Die Funktion wird nicht auf mobilen Geräten oder Geräten mit AIR für TV unterstützt. Mit der NativeProcess.isSupported
-Eigenschaft können Sie testen, ob zur Laufzeit Unterstützung gegeben ist. Weitere Informationen zum AIR-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.
AIR-Anwendungen, die mit einem nativen Installationsprogramm installiert wurden (Anwendungen mit dem Profil „erweiterter Desktop“) können eine Anwendung auch mit File.openWithDefaultApplication
öffnen. Die NativeProcess-Klasse ermöglicht jedoch den direkten Zugriff auf die Standardeingabe-, Standardausgabe und Standardfehler-Pipes.
Hinweis: AIR-für-TV-Anwendungen, die das extendedTV
-Profil verwenden, können native Erweiterungen verwenden, um native Prozesse auszuführen. Mobile Geräte können ebenfalls native Erweiterungen verwenden.
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
isSupported : Boolean [statisch] [schreibgeschützt]
Gibt an, ob laufende native Prozesse im aktuellen Profil unterstützt werden. | NativeProcess | ||
running : Boolean [schreibgeschützt]
Gibt an, ob dieser native Prozess zurzeit ausgeführt wird. | NativeProcess | ||
standardError : IDataInput [schreibgeschützt]
Ermöglicht den Zugriff auf die Standardfehlerausgabe von diesem nativen Prozess. | NativeProcess | ||
standardInput : IDataOutput [schreibgeschützt]
Ermöglicht den Zugriff auf die Standardeingabe dieses nativen Prozesses. | NativeProcess | ||
standardOutput : IDataInput [schreibgeschützt]
Ermöglicht den Zugriff auf die Standardausgabe-Pipe dieses nativen Prozesses. | NativeProcess |
Methode | Definiert von | ||
---|---|---|---|
Konstruiert ein nicht initialisiertes NativeProcess-Objekt. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Schließt den Eingabestream für diesen Prozess. | NativeProcess | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
Versucht den nativen Prozess zu beenden. | NativeProcess | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Startet den nativen Prozess, der durch die angegebene Start-Info identifiziert wird. | NativeProcess | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
Ereignis | Übersicht | Definiert von | ||
---|---|---|---|---|
[broadcast event] Wird ausgelöst, wenn Flash Player oder eine AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird. | EventDispatcher | |||
[broadcast event] Wird ausgelöst, wenn Flash Player- oder die AIR-Anwendung den Fokus verliert und inaktiv wird. | EventDispatcher | |||
Gibt an, dass der native Prozess beendet wurde. | NativeProcess | |||
Gibt an, dass NativeProcess seinen Fehlerstream geschlossen hat. | NativeProcess | |||
Gibt an, dass der native Prozess Daten zur Verfügung hat, die vom Standardfehlerstream (stderror) gelesen werden können. | NativeProcess | |||
Gibt an, das nicht vom Standardfehlerstream (stderror) gelesen werden konnte. | NativeProcess | |||
Gibt an, dass das NativeProcess-Objekt seinen Eingabestream durch einen Aufruf der closeInput()-Methode geschlossen hat. | NativeProcess | |||
Gibt an, dass nicht in den Standardeingabestream (stdin) geschrieben werden konnte. | NativeProcess | |||
Gibt an, dass NativeProcess Daten für den untergeordneten Prozess geschrieben hat. | NativeProcess | |||
Gibt an, dass NativeProcess seinen Ausgabestream geschlossen hat. | NativeProcess | |||
Gibt an, dass der native Prozess Daten zur Verfügung hat, die vom Ausgabestream gelesen werden können. | NativeProcess | |||
Gibt an, dass nicht vom stdout-Stream gelesen werden konnte. | NativeProcess |
isSupported | Eigenschaft |
isSupported:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, ob laufende native Prozesse im aktuellen Profil unterstützt werden. Diese Eigenschaft gibt nur dann true
zurück, wenn die Ausführung im extendedDesktop-Profil erfolgt. Außerdem ist NativeProcess.isSupported
immer false
bei Anwendungen, die als AIR-Datei installiert werden. Sie müssen eine AIR-Anwendung mit dem ADT-Flag -target native
komprimieren, um die NativeProcess-Klasse zu verwenden.
Implementierung
public static function get isSupported():Boolean
running | Eigenschaft |
running:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, ob dieser native Prozess zurzeit ausgeführt wird. Der Prozess wird ausgeführt, wenn Sie die start()
-Methode aufgerufen haben und das NativeProcess-Objekt noch kein exit
-Ereignis abgesetzt hat. Eine NativeProcess-Instanz entspricht einem einzelnen Prozess auf dem zugrundeliegenden Betriebssystem. Diese Eigenschaft behält den Wert true
, solange der Prozess des zugrundeliegenden Betriebssystems ausgeführt wird (während der native Prozess gestartet wird und bis der Prozess einen Beenden-Code an das Betriebssystem zurückgibt.)
Implementierung
public function get running():Boolean
standardError | Eigenschaft |
standardError:IDataInput
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Ermöglicht den Zugriff auf die Standardfehlerausgabe von diesem nativen Prozess. Wenn Daten in dieser Pipe verfügbar werden, setzt das NativeProcess-Objekt ein ProgressEvent-Objekt ab. Wenn Sie versuchen, Daten aus diesem Stream zu lesen, wenn dort keine vorhanden sind, gibt das NativeProcess-Objekt eine EOFError-Ausnahme aus.
Der Typ ist IDataInput, da aus der Perspektive des aktuellen Prozesses Daten eingegeben werden, obwohl es sich um einen Ausgabestream des untergeordneten Prozesses handelt.
Implementierung
public function get standardError():IDataInput
Auslöser
EOFError — wenn keine Daten vorhanden sind und ein Lesevorgang versucht wird.
|
Verwandte API-Elemente
standardInput | Eigenschaft |
standardInput:IDataOutput
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Ermöglicht den Zugriff auf die Standardeingabe dieses nativen Prozesses. Verwenden Sie diese Pipe, um Daten an diesen Prozess zu senden. Jedes Mal, wenn Daten in die input
-Eigenschaft geschrieben werden, werden diese Daten in die Eingabe-Pipe des nativen Prozesses geschrieben, sobald dies möglich ist.
Der Typ ist IDataOutput, da aus der Perspektive des aktuellen Prozesses Daten ausgegeben werden, obwohl es sich um einen Eingabestream des untergeordneten Prozesses handelt.
Implementierung
public function get standardInput():IDataOutput
Auslöser
IllegalOperationError — beim Schreiben in diesen Wert, wenn running den Wert false zurückgibt oder wenn versucht wird, Daten in einen geschlossenen Eingabestream zu schreiben.
|
Verwandte API-Elemente
standardOutput | Eigenschaft |
standardOutput:IDataInput
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Ermöglicht den Zugriff auf die Standardausgabe-Pipe dieses nativen Prozesses. Verwenden Sie diese Pipe, um Daten aus der Standardausgabe des nativen Prozesses zu lesen. Wenn in dieser Pipe Daten vorhanden sind, setzt das NativeProcess-Objekt ein ProgressEvent ab. Wenn Sie versuchen, Daten aus diesem Stream zu lesen, wenn dort keine vorhanden sind, gibt das NativeProcess-Objekt einen EOFError aus.
Der Typ ist IDataInput, da aus der Perspektive des aktuellen Prozesses Daten eingegeben werden, obwohl es sich um einen Ausgabestream des untergeordneten Prozesses handelt.
Implementierung
public function get standardOutput():IDataInput
Auslöser
EOFError — wenn keine Daten vorhanden sind und ein Lesevorgang versucht wird.
|
Verwandte API-Elemente
NativeProcess | () | Konstruktor |
public function NativeProcess()
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Konstruiert ein nicht initialisiertes NativeProcess-Objekt. Rufen Sie die start()
-Methode auf, um den Prozess zu starten.
Verwandte API-Elemente
closeInput | () | Methode |
public function closeInput():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Schließt den Eingabestream für diesen Prozess. Einige Befehlzeilenanwendungen warten, bis der Eingabestream geschlossen ist, bevor bestimmte Vorgänge gestartet werden. Nachdem der Stream geschlossen wurde, kann er erst dann wieder geöffnet werden, wenn der Prozess beendet und erneut gestartet wurde.
Ereignisse
ioErrorStandardInput: — Es gibt ein Problem beim Schließen des Eingabestreams für den Prozess.
| |
standardInputClose: — Der Eingabestream wurde geschlossen.
|
exit | () | Methode |
public function exit(force:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Versucht den nativen Prozess zu beenden.
Parameter
force:Boolean (default = false ) — Ob die Anwendung versuchen soll, das Beenden des nativen Prozesses ggf. zu erzwingen.
Wenn der Wenn der Falls NativeProcess erfolgreich beendet wird, wird ein |
start | () | Methode |
public function start(info:NativeProcessStartupInfo):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Startet den nativen Prozess, der durch die angegebene Start-Info identifiziert wird. Nachdem der Prozess gestartet wurde, werden alle Eingabe- und Ausgabestreams geöffnet. Diese Methode liefert sofort eine Rückgabe, nachdem die Anforderung, den angegebenen Prozess zu starten, an das Betriebssystem erfolgt ist. Das NativeProcess-Objekt gibt eine IllegalOperationError
-Ausnahme aus, wenn der Prozess zurzeit ausgeführt wird. Der Prozess wird ausgeführt, wenn die running
-Eigenschaft des NativeProcess-Objekts den Wert true
zurückgibt. Wenn das Betriebssystem den Prozess nicht starten kann, wird ein Error
ausgegeben.
Eine NativeProcess-Instanz entspricht einem einzelnen Prozess auf dem zugrundeliegenden Betriebssystem. Wenn Sie mehrere Instanzen desselben Betriebssystemprozesses gleichzeitig ausführen möchten, können Sie für jeden untergeordneten Prozess eine NativeProcess-Instanz erstellen.
Sie können diese Methode aufrufen, wenn die running
-Eigenschaft des NativeProcess-Objekts den Wert false
zurückgibt. Dies bedeutet, dass das NativeProcess-Objekt wiederverwendet werden kann. Anders ausgedrückt, Sie können eine NativeProcess-Instanz konstruieren, die start()
-Methode aufrufen, auf das exit
-Ereignis warten und dann erneut die start()
-Methode aufrufen. Sie können im nachfolgenden Aufruf der start()
-Methode ein anderes NativeProcessStartupInfo-Objekt verwenden als mit dem info
-Parameter festgelegt.
Die NativeProcess-Klasse und ihre Fähigkeiten stehen nur AIR-Anwendungen zur Verfügung, die mit einem nativen Installationsprogramm installiert wurden. Beim Debugging können Sie das -profile extendedDesktop
-Argument an ADL übergeben, um die NativeProcess-Funktionalität zu aktivieren. Überprüfen Sie die NativeProcess.isSupported
-Eigenschaft, um festzustellen, ob die native Prozesskommunikation unterstützt wird.
Wichtige Sicherheitsüberlegungen:
Die API für native Prozesse kann jede ausführbare Datei auf dem System des Benutzers ausführen. Seien Sie beim Konstruieren und Ausführen von Befehlen äußerst vorsichtig. Wenn ein Teil eines auszuführenden Befehls aus einer externen Quelle stammt, prüfen Sie sorgfältig, ob die Ausführung des Befehls sicher ist. Gleichermaßen sollte Ihre AIR-Anwendung Daten validieren, die an einen laufenden Prozess übergeben werden.
Die Validierung von Eingaben kann jedoch schwierig sein. Um diese Probleme zu vermeiden, schreiben Sie am besten eine native Anwendung (zum Beispiel eine EXE-Datei für Windows) mit spezifischen APIs. Diese APIs sollten nur diejenigen Befehle verarbeiten, die speziell für die AIR-Anwendung erforderlich sind. Zum Beispiel könnte die native Anwendung nur einen begrenzten Satz von Anweisungen über den Standardeingabestream akzeptieren.
AIR unter Windows lässt die direkte Ausführung von .bat-Dateien nicht zu. Windows-.bat-Dateien werden vom Befehlszeileninterpreter (cmd.exe) ausgeführt. Wenn Sie eine .bat-Datei aufrufen, kann diese Befehlsanwendung Argumente, die an den Befehl übergeben werden, als zusätzlich zu startende Anwendungen interpretieren. Durch das böswillige Einfügen von zusätzlichen Zeichen in den Argumentstring könnte cmd.exe eine schädliche oder unsichere Anwendung ausführen. Ohne eine gute Datenvalidierung könnte Ihre Anwendung zum Beispiel myBat.bat myArguments c:/evil.exe
aufrufen. Die Befehlsanwendung würde die Anwendung „evil.exe“ zusätzlich zu Ihrer Batchdatei ausführen.
Wenn Sie die start()
-Methode mit einer .bat-Datei aufrufen, gibt das NativeProcess-Objekt eine Ausnahme aus. Die message
-Eigenschaft des Error-Objekts enthält den String "Fehler #3219: NativeProcess konnte nicht gestartet werden."
Parameter
info:NativeProcessStartupInfo — NativeProcessStartupInfo Definiert Informationen darüber, wie der native Prozess gestartet werden soll.
|
Auslöser
IllegalOperationError — wenn NativeProcess zurzeit ausgeführt wird.
| |
ArgumentError — wenn die nativePath-Eigenschaft von NativeProcessStartupInfo nicht vorhanden ist.
| |
Error — wenn NativeProcess nicht erfolgreich gestartet wurde.
|
Verwandte API-Elemente
exit | Ereignis |
flash.events.NativeProcessExitEvent
Eigenschaft NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass der native Prozess beendet wurde. Die exitCode
-Eigenschaft enthält den Wert, den der Prozess beim Beenden an das Host-Betriebssystem zurückgibt. Wenn die AIR-Anwendung den Prozess durch einen Aufruf der exit()
-Methode des NativeProcess-Objekts beendet, wird die exitCode
-Eigenschaft auf NaN (not a number, keine Zahl) gesetzt.
standardErrorClose | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass NativeProcess seinen Fehlerstream geschlossen hat.
standardErrorData | Ereignis |
flash.events.ProgressEvent
Eigenschaft ProgressEvent.type =
flash.events.ProgressEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass der native Prozess Daten zur Verfügung hat, die vom Standardfehlerstream (stderror) gelesen werden können. Das NativeProcess-Objekt setzt dieses Ereignis ab, wenn der untergeordnete Prozess seinen Standardfehlerstream löscht oder wenn der interne Puffer für die Kommunikation zwischen Prozessen voll ist. Schreiben Sie keinen Code, der von der Größe dieses internen Puffers abhängig ist; sie variiert je nach Version und Betriebssystem.
standardErrorIoError | Ereignis |
flash.events.IOErrorEvent
Eigenschaft IOErrorEvent.type =
flash.events.IOErrorEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, das nicht vom Standardfehlerstream (stderror) gelesen werden konnte. Das NativeProcess-Objekt kann dieses Ereignis absetzen, wenn die Laufzeitumgebung keine Daten aus der Standardfehlergabepipe des nativen Prozesses lesen kann.
standardInputClose | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass das NativeProcess-Objekt seinen Eingabestream durch einen Aufruf der closeInput()
-Methode geschlossen hat. Das NativeProcess-Objekt setzt dieses Ereignis nicht ab, wenn der native Prozess selbst den Eingabestream schließt.
standardInputIoError | Ereignis |
flash.events.IOErrorEvent
Eigenschaft IOErrorEvent.type =
flash.events.IOErrorEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass nicht in den Standardeingabestream (stdin) geschrieben werden konnte. Das NativeProcess-Objekt setzt dieses Ereignis ab, wenn die closeInput()
-Methode fehlschlägt oder wenn die Laufzeitumgebung keine Daten in die Standardeingabe-Pipe des nativen Prozesses schreiben kann.
standardInputProgress | Ereignis |
flash.events.ProgressEvent
Eigenschaft ProgressEvent.type =
flash.events.ProgressEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass NativeProcess Daten für den untergeordneten Prozess geschrieben hat. Das NativeProcess-Objekt setzt dieses Ereignis ab, wenn Daten in den Stream geschrieben werden. Dieses Ereignis gibt nicht an, ob der untergeordnete Prozess Daten gelesen hat oder nicht.
standardOutputClose | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass NativeProcess seinen Ausgabestream geschlossen hat.
standardOutputData | Ereignis |
flash.events.ProgressEvent
Eigenschaft ProgressEvent.type =
flash.events.ProgressEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass der native Prozess Daten zur Verfügung hat, die vom Ausgabestream gelesen werden können. Das NativeProcess-Objekt setzt dieses Ereignis ab, wenn der untergeordnete Prozess seinen stdout-Stream löscht oder wenn der interne Puffer für die Kommunikation zwischen Prozessen voll ist. Schreiben Sie keinen Code, der von der Größe dieses internen Puffers abhängig ist; sie variiert je nach Version und Betriebssystem.
standardOutputIoError | Ereignis |
flash.events.IOErrorEvent
Eigenschaft IOErrorEvent.type =
flash.events.IOErrorEvent
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Gibt an, dass nicht vom stdout-Stream gelesen werden konnte. Das NativeProcess-Objekt kann dieses Ereignis absetzen, wenn die Laufzeitumgebung keine Daten aus der Standardausgabepipe des nativen Prozesses lesen kann.
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, 10:04 AM Z