Pakket | flash.desktop |
Klasse | public class NativeProcess |
Overerving | NativeProcess EventDispatcher Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
De NativeProcess-klasse en zijn mogelijkheden zijn alleen beschikbaar voor AIR-toepassingen die met een native installatieprogramma zijn geïnstalleerd (uitgebreide profieltoepassingen op het bureaublad). Tijdens het opsporen van fouten kunt u het argument -profile extendedDesktop
aan ADL verzenden om de functie NativeProcess in te schakelen. In de runtime, kunt u de eigenschap NativeProcess.isSupported
controleren om te bepalen of de native procescommunicatie wordt ondersteund.
AIR-profielondersteuning: Deze functie wordt ondersteund door toepassingen die via native installatieprogramma's zijn geïmplementeerd op desktopbesturingssystemen. Deze functie wordt niet ondersteund op mobiele apparaten en ook niet op AIR for TV-apparaten. Met de eigenschap NativeProcess.isSupported
kunt u testen op ondersteuning tijdens runtime. Zie AIR-profielondersteuning voor meer informatie over API-ondersteuning voor meerdere profielen.
AIR-toepassingen worden geïnstalleerd met een native installatieprogramma (uitgebreide profieltoepassingen op het bureaublad) en kunnen ook de File.openWithDefaultApplication
gebruiken om een toepassing te openen. De NativeProcess-klasse biedt echter rechtstreekse toegang tot de standaardinvoer-, standaarduitvoer- en standaardfoutpipes.
Opmerking: AIR for TV-toepassingen met het extendedTV
-profiel kunnen native processen uitvoeren met behulp van native extensies. Mobiele apparaten kunnen op dezelfde manier gebruikmaken van native extensies.
Meer voorbeelden
Verwante API-elementen
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
isSupported : Boolean [statisch] [alleen-lezen]
Geeft aan, of het uitvoeren van native processen in het huidige profiel wordt ondersteund. | NativeProcess | ||
running : Boolean [alleen-lezen]
Geeft aan of dit native proces op dit moment actief is. | NativeProcess | ||
standardError : IDataInput [alleen-lezen]
Geeft toegang tot de standaard foutuitvoer vanaf dit native proces. | NativeProcess | ||
standardInput : IDataOutput [alleen-lezen]
Biedt toegang tot de standaardinvoer van dit native proces. | NativeProcess | ||
standardOutput : IDataInput [alleen-lezen]
Biedt toegang tot de standaarduitvoer van dit native proces. | NativeProcess |
Methode | Gedefinieerd door | ||
---|---|---|---|
Stelt een niet-geïnitialiseerd NativeProcess-object samen. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt. | EventDispatcher | ||
Sluit de invoerstream voor dit proces af. | NativeProcess | ||
Verzendt een gebeurtenis naar de gebeurtenisstroom. | EventDispatcher | ||
Probeert het native proces af te sluiten. | NativeProcess | ||
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis. | EventDispatcher | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Verwijdert een listener uit het object EventDispatcher. | EventDispatcher | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Start het native proces dat wordt genoemd in de opstartinformatie. | NativeProcess | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object | ||
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis. | EventDispatcher |
Gebeurtenis | Overzicht | Gedefinieerd door | ||
---|---|---|---|---|
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de besturingssysteemfocus krijgt en actief wordt. | EventDispatcher | |||
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de systeemfocus verliest en inactief wordt. | EventDispatcher | |||
Geeft aan dat het native proces is afgesloten. | NativeProcess | |||
Geeft aan dat het NativeProcess zijn foutstream heeft afgesloten. | NativeProcess | |||
Geeft aan dat het native proces gegevens beschikbaar heeft om te lezen op de standaard foutstream (stderror). | NativeProcess | |||
Geeft aan dat het lezen vanaf de standaard foutstream (stderror) is mislukt. | NativeProcess | |||
Geeft aan dat het NativeProcess-object zijn invoerstream heeft gesloten door de closeInput()-methode op te roepen. | NativeProcess | |||
Geeft aan dat het schrijven naar de standaardinvoerstream (stdin) is mislukt. | NativeProcess | |||
Geeft aan dat het NativeProcess gegevens naar de invoerstream voor het onderliggende proces heeft geschreven. | NativeProcess | |||
Geeft aan dat het NativeProcess zijn uitvoerstream heeft afgesloten. | NativeProcess | |||
Geeft aan dat het native proces gegevens beschikbaar heeft om te lezen op de uitvoerstream. | NativeProcess | |||
Geeft aan dat het lezen vanaf de stdout-stream is mislukt. | NativeProcess |
isSupported | eigenschap |
isSupported:Boolean
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan, of het uitvoeren van native processen in het huidige profiel wordt ondersteund. Deze eigenschap retourneert alleen true
wanneer deze eigenschap wordt uitgevoerd in het extendedDesktop-profiel. Bovendien is de waarde van NativeProcess.isSupported
altijd false
voor toepassingen die als een AIR-bestand zijn geïnstalleerd. Als u de NativeProcess-klasse wilt gebruiken, moet u een pakket maken van een AIR-toepassing en daarbij de ADT-markering -target native
toepassen.
Implementatie
public static function get isSupported():Boolean
running | eigenschap |
running:Boolean
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan of dit native proces op dit moment actief is. Het proces is actief als u de start()
-methode hebt opgeroepen en het NativeProcess-object nog geen exit
-gebeurtenis heeft verstuurd. Een NativeProcess-instantie komt overeen met één proces in het onderliggende besturingssysteem. Deze eigenschap blijft true
zolang het onderliggende besturingssysteemproces wordt uitgevoerd (terwijl het native proces start en totdat het proces een afsluitcode naar het besturingssysteem retourneert.)
Implementatie
public function get running():Boolean
standardError | eigenschap |
standardError:IDataInput
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft toegang tot de standaard foutuitvoer vanaf dit native proces. Wanneer er op deze pipe gegevens beschikbaar komen, verstuurt het NativeProcess-object een ProgressEvent-object. Als u gegevens probeert te lezen vanaf deze stream wanneer er geen gegevens beschikbaar zijn, geeft het NativeProcess-object een EOFError-uitzondering weer.
Het type is IDataInput, omdat gegevens invoer zijn vanuit het perspectief van het huidige proces, zelfs als het een uitvoerstream van het onderliggende proces is.
Implementatie
public function get standardError():IDataInput
Gegenereerde uitzondering
EOFError — als er geen gegevens aanwezig zijn en er een poging tot een leesbewerking wordt gedaan.
|
Verwante API-elementen
standardInput | eigenschap |
standardInput:IDataOutput
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Biedt toegang tot de standaardinvoer van dit native proces. Gebruik deze pipe om gegevens naar dit proces te sturen. Telkens als er gegevens naar de Input
-eigenschap worden geschreven, worden deze gegevens zo snel mogelijk geschreven naar de invoerpipe van het native proces.
Het type is IDataOutput, omdat gegevens uitvoer zijn vanuit het perspectief van het huidige proces, zelfs als het een invoerstream van het onderliggende proces is.
Implementatie
public function get standardInput():IDataOutput
Gegenereerde uitzondering
IllegalOperationError — wanneer er naar deze waarde wordt geschreven, wanneer running false retourneert of wanneer er wordt geprobeerd om gegevens naar een gesloten invoerstream te schrijven.
|
Verwante API-elementen
standardOutput | eigenschap |
standardOutput:IDataInput
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Biedt toegang tot de standaarduitvoer van dit native proces. Gebruik deze pipe om gegevens te lezen vanaf de standaarduitvoer van het native proces. Wanneer er op deze pipe gegevens aanwezig zijn, verstuurt het NativeProcess-object een ProgressEvent. Als u gegevens probeert te lezen vanaf deze stream wanneer er geen gegevens beschikbaar zijn, geeft het NativeProcess-object een EOFError weer.
Het type is IDataInput, omdat gegevens invoer zijn vanuit het perspectief van het huidige proces, zelfs als het een uitvoerstream van het onderliggende proces is.
Implementatie
public function get standardOutput():IDataInput
Gegenereerde uitzondering
EOFError — als er geen gegevens aanwezig zijn en er een poging tot een leesbewerking wordt gedaan.
|
Verwante API-elementen
NativeProcess | () | Constructor |
public function NativeProcess()
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Stelt een niet-geïnitialiseerd NativeProcess-object samen. Roep de start()
-methode op om het proces te starten.
Verwante API-elementen
closeInput | () | methode |
public function closeInput():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Sluit de invoerstream voor dit proces af. Sommige opdrachtregeltoepassingen wachten tot de invoerstream is gesloten, om een aantal bewerkingen te starten. Wanneer de stream gesloten is, kan deze niet opnieuw worden geopend, tot het proces wordt gesloten en opnieuw wordt opgestart.
Gebeurtenissen
ioErrorStandardInput: — Er is een probleem met het afsluiten van de invoerstream voor het proces
| |
standardInputClose: — De invoerstream is afgesloten.
|
exit | () | methode |
public function exit(force:Boolean = false):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Probeert het native proces af te sluiten.
Parameters
force:Boolean (default = false ) — Of de toepassing het afsluiten van het native proces indien nodig moet forceren.
Als de parameter Als de parameter Als het NativeProcess niet is afgesloten, wordt er een |
start | () | methode |
public function start(info:NativeProcessStartupInfo):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Start het native proces dat wordt genoemd in de opstartinformatie. Wanneer het proces start, worden alle invoer- en uitvoerstreams geopend. Deze methode wordt direct geretourneerd nadat de aanvraag voor het starten van het opgegeven proces aan het besturingssysteem is uitgevoerd. Het NativeProcess-object geeft een IllegalOperationError
-uitzondering weer als het proces al actief is. Het proces is actief als de eigenschap running
van het Nativeprocess-object true
retourneert. Als het besturingssysteem het proces niet kan starten, wordt er een Error
weergegeven.
Een NativeProcess-instantie komt overeen met één proces in het onderliggende besturingssysteem. Als u meer dan één instantie van hetzelfde besturingssysteemproces tegelijkertijd uitvoert, kunt u per onderliggend proces één NativeProcess-instantie maken.
U kunt deze methode oproepen wanneer de eigenschap running
van het nativeProcess-object false
retourneert. Dit betekent dat het NativeProcess-object opnieuw kan worden gebruikt. U kunt met andere woorden een NativeProcess-instantie samenstellen, de start()
-methode oproepen, wachten op de exit
-gebeurtenis en vervolgens de start()
-methode opnieuw oproepen. U kunt een ander NativeProcessStartupInfo-object gebruiken dan de parameterwaarde info
in de volgende oproep van de start()
-methode.
De NativeProcess-klasse en zijn mogelijkheden zijn alleen beschikbaar voor AIR-toepassingen die met een native installatieprogramma zijn geïnstalleerd. Tijdens het opsporen van fouten kunt u het argument -profile extendedDesktop
aan ADL verzenden om de functie NativeProcess in te schakelen. Controleer de eigenschap NativeProcess.isSupported
om te bepalen of de native procescommunicatie wordt ondersteund.
Belangrijke beveiligingsoverwegingen
De API van het native proces kan elke uitvoerbare code op het systeem van een gebruiker uitvoeren. Wees zeer voorzichtig bij het opstellen en uitvoeren van opdrachten. Als een deel van een uit te voeren opdracht van een externe bron komt, moet u zorgvuldig controleren of de opdracht veilig is om uit te voeren. Uw AIR-toepassing moet ook gegevens controleren die in een actief proces worden doorgegeven.
Het valideren van invoer kan echter moeilijk zijn. Om zulke moeilijkheden te vermijden, kunt u het best een native toepassing (zoals een EXE-bestand in Windows) met specifieke API's te schrijven. Deze API's moeten alleen de opdrachten verwerken die specifiek voor een AIR-toepassing vereist zijn. De oorspronkelijke toepassing kan slechts een beperkt aantal instructies accepteren via de standaard invoerstroom.
AIR op Windows staat u niet toe om .bat-bestanden rechtstreeks uit te voeren. Windows .bat-bestanden worden uitgevoerd met behulp van de opdrachtverwerkingstoepassing (cmd.exe). Wanneer u dit .bat-bestand oproept, kan deze opdrachttoepassing argumenten verwerken die aan de opdracht doorgeeft om aanvullende toepassingen te starten. Een schadelijke invoeging van extra tekens in de argumenttekenreeks kan ertoe leiden dat cmd.exe een schadelijke of onveilige toepassing uitvoert. Zonder de juiste gegevensvalidatie kan uw AIR-toepassing bijvoorbeeld myBat.bat myArguments c:/evil.exe
misschien oproepen. De opdrachttoepassing start de evil.exe-toepassing naast het uitvoeren van uw batchbestand.
Als u de start()
-methode met een .bat-bestand oproept, genereert het nativeProcess-object een uitzondering. De message
-eigenschap van het Error-object bevat de tekenreeks "Foutnummer #3219: Kan NativeProcess niet starten."
Parameters
info:NativeProcessStartupInfo — NativeProcessStartupInfo definieert informatie over hoe het native proces moet worden gestart.
|
Gegenereerde uitzondering
IllegalOperationError — als het NativeProcess actief is.
| |
ArgumentError — als de nativePath-eigenschap van de NativeProcessStartupInfo niet bestaat.
| |
Error — als het NativeProcess niet succesvol is gestart.
|
Verwante API-elementen
exit | Gebeurtenis |
flash.events.NativeProcessExitEvent
eigenschap NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het native proces is afgesloten. De eigenschap exitCode
bevat de waarde die het proces bij het afsluiten retourneert naar het hostbesturingssysteem. Als de AIR-toepassing het proces beëindigt door de methode exit()
van het NativeProcess-object op te roepen, wordt de eigenschap exitCode
ingesteld op NaN.
standardErrorClose | Gebeurtenis |
flash.events.Event
eigenschap Event.type =
flash.events.Event
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het NativeProcess zijn foutstream heeft afgesloten.
standardErrorData | Gebeurtenis |
flash.events.ProgressEvent
eigenschap ProgressEvent.type =
flash.events.ProgressEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het native proces gegevens beschikbaar heeft om te lezen op de standaard foutstream (stderror). Het NativeProcess-object verstuurt deze gebeurtenis wanneer het onderliggende proces zijn standaard foutstream leegt of wanneer de interne buffer die voor de communicatie tussen de processen gebruikt wordt vol is. Schrijf geen code die afhankelijk is van de grootte van deze interne buffer; deze is anders in verschillende versies en besturingssystemen.
standardErrorIoError | Gebeurtenis |
flash.events.IOErrorEvent
eigenschap IOErrorEvent.type =
flash.events.IOErrorEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het lezen vanaf de standaard foutstream (stderror) is mislukt. Het NativeProcess-object kan deze gebeurtenis verzenden wanneer de runtime geen gegevens kan lezen vanaf de standaardfoutpipe van het native proces.
standardInputClose | Gebeurtenis |
flash.events.Event
eigenschap Event.type =
flash.events.Event
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het NativeProcess-object zijn invoerstream heeft gesloten door de closeInput()
-methode op te roepen. Het NativeProcess-object verstuurt deze gebeurtenis niet wanneer het werkelijke native proces zelf de invoerstream sluit.
standardInputIoError | Gebeurtenis |
flash.events.IOErrorEvent
eigenschap IOErrorEvent.type =
flash.events.IOErrorEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het schrijven naar de standaardinvoerstream (stdin) is mislukt. Het NativeProcess-object verstuurt deze gebeurtenis wanneer de methode closeInput()
mislukt of wanneer de runtime geen gegevens kan schrijven naar de standaard invoerpipe van het native proces.
standardInputProgress | Gebeurtenis |
flash.events.ProgressEvent
eigenschap ProgressEvent.type =
flash.events.ProgressEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het NativeProcess gegevens naar de invoerstream voor het onderliggende proces heeft geschreven. Het NativeProcess-object verstuurt deze gebeurtenis wanneer er gegevens naar de stream worden geschreven. Deze gebeurtenis geeft niet aan of het onderliggende proces hiervan gegevens heeft gelezen.
standardOutputClose | Gebeurtenis |
flash.events.Event
eigenschap Event.type =
flash.events.Event
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het NativeProcess zijn uitvoerstream heeft afgesloten.
standardOutputData | Gebeurtenis |
flash.events.ProgressEvent
eigenschap ProgressEvent.type =
flash.events.ProgressEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het native proces gegevens beschikbaar heeft om te lezen op de uitvoerstream. Het NativeProcess-object verstuurt deze gebeurtenis wanneer het onderliggende proces zijn stdout-stream leegt of wanneer de interne buffer die voor de communicatie tussen de processen gebruikt wordt; vol is. Schrijf geen code die afhankelijk is van de grootte van deze interne buffer; deze is anders in verschillende versies en besturingssystemen.
standardOutputIoError | Gebeurtenis |
flash.events.IOErrorEvent
eigenschap IOErrorEvent.type =
flash.events.IOErrorEvent
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Geeft aan dat het lezen vanaf de stdout-stream is mislukt. Het NativeProcess-object kan deze gebeurtenis verzenden wanneer de runtime geen gegevens kan lezen vanaf de standaarduitvoerpipe van het native proces.
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)
Wed Jun 13 2018, 11:42 AM Z