Paket | flash.desktop |
Klass | public class NativeProcess |
Arv | NativeProcess EventDispatcher Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Klassen NativeProcess och dess funktioner är bara tillgängliga för AIR-program som installerats med ett inbyggt installationsprogram (utökade skrivbordsprofilprogram). Vid felsökning kan du skicka argumentet -profile extendedDesktop
till ADL för att aktivera NativeProcess-funktionen. Vid körningstillfället kan du kontrollera egenskapen NativeProcess.isSupported
för att avgöra om inbyggd processkommunikation stöds.
Stöd för AIR-profiler: Den här funktionen stöds i program som distribueras till datoroperativsystem via inbyggda installationsprogram. Funktionen stöds inte på mobilenheter eller enheter med AIR for TV. Du kan testa stödet vid körning med egenskapen NativeProcess.isSupported
. På sidan om stöd för AIR-profiler hittar du mer information om API-stöd för flera profiler.
AIR-program som installerats med ett inbyggt installationsprogram (utökade skrivbordsprofilprogram) kan även öppna program med File.openWithDefaultApplication
. Klassen NativeProcess ger dock direkt åtkomst till rören för standardindata, standardutdata och standardfel.
Obs! AIR for TV-program med profilen extendedTV
kan använda systemspecifika tillägg för att köra systemspecifika processer. Även för mobila enheter kan systemspecifika tillägg användas.
Fler exempel
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
isSupported : Boolean [statisk] [skrivskyddad]
Anger om körning av inbyggda processer stöds i den aktuella profilen. | NativeProcess | ||
running : Boolean [skrivskyddad]
Anger om den här inbyggda processen körs just nu. | NativeProcess | ||
standardError : IDataInput [skrivskyddad]
Ger tillgång till standardfelutdata från den här inbyggda processen. | NativeProcess | ||
standardInput : IDataOutput [skrivskyddad]
Ger tillgång till standardindata för den här inbyggda processen. | NativeProcess | ||
standardOutput : IDataInput [skrivskyddad]
Ger tillgång till standardutdataröret för den här inbyggda processen. | NativeProcess |
Metod | Definieras med | ||
---|---|---|---|
Skapar ett oinitierat NativeProcess-objekt. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | EventDispatcher | ||
Stänger indataströmmen för den här processen. | NativeProcess | ||
Skickar en händelse till händelseflödet. | EventDispatcher | ||
Försöker avsluta den inbyggda processen. | NativeProcess | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | EventDispatcher | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | EventDispatcher | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Startar den inbyggda process som identifieras av angiven startinformation. | NativeProcess | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | EventDispatcher |
Händelse | Sammanfattning | Definieras med | ||
---|---|---|---|---|
[utsändningshändelse] Skickas när Flash Player eller AIR får operativsystemfokus och blir aktivt. | EventDispatcher | |||
[utsändningshändelse] Skickas när Flash Player eller AIR förlorar operativsystemfokus och blir inaktivt. | EventDispatcher | |||
Anger att den inbyggda processen har avslutats. | NativeProcess | |||
Anger att NativeProcess har stängt sin felström. | NativeProcess | |||
Anger att den inbyggda processen har data som är tillgängliga för läsning i standardfelströmmen (stderror). | NativeProcess | |||
Anger att läsning från standardfelströmmen (stderror) har misslyckats. | NativeProcess | |||
Anger att NativeProcess-objektet har stängt sin indataström genom att anropa metoden closeInput(). | NativeProcess | |||
Anger att skrivning till standardindataströmmen (stdin) har misslyckats. | NativeProcess | |||
Anger att NativeProcess har skrivit data till indataströmmen för den underordnade processen. | NativeProcess | |||
Anger att NativeProcess har stängt sin utdataström. | NativeProcess | |||
Anger att den inbyggda processen har data som är tillgängliga för läsning i utdataströmmen. | NativeProcess | |||
Anger att läsning från standardutdataströmmen (stdout) har misslyckats. | NativeProcess |
isSupported | egenskap |
isSupported:Boolean
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger om körning av inbyggda processer stöds i den aktuella profilen. Den här egenskapen returnerar bara värdet true
när den körs i profilen extendedDesktop. Dessutom är NativeProcess.isSupported
alltid false
för program som installerats som AIR-filer. Du måste paketera ett AIR-program med ADT-flaggan -target native
för att kunna använda klassen NativeProcess.
Implementering
public static function get isSupported():Boolean
running | egenskap |
running:Boolean
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger om den här inbyggda processen körs just nu. Processen körs om du har anropat metoden start()
och NativeProcess-objektet inte har skickat en exit
-händelse än. En NativeProcess-instans motsvarar en enda process i det underliggande operativsystemet. Egenskapen fortsätter att vara true
så länge den underliggande operativsystemsprocessen körs (från det att den inbyggda processen startar tills processen skickar en exit-kod till operativsystemet).
Implementering
public function get running():Boolean
standardError | egenskap |
standardError:IDataInput
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Ger tillgång till standardfelutdata från den här inbyggda processen. NativeProcess-objektet skickar ett ProgressEvent-objekt när data blir tillgängliga i detta rör. NativeProcess-objektet genererar ett EOFError-undantag om du försöker läsa data från strömmen när data saknas.
Typen är IDataInput eftersom data matas in från den aktuella processen trots att det är en utdataström från den underordnade processen.
Implementering
public function get standardError():IDataInput
Utlöser
EOFError — om inga data finns och ett försök att köra en läsåtgärd sker.
|
Relaterade API-element
standardInput | egenskap |
standardInput:IDataOutput
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Ger tillgång till standardindata för den här inbyggda processen. Använd detta rör för att sända data till processen. Varje gång data skrivs till egenskapen input
skrivs dessa data till den inbyggda processens indatarör så fort som möjligt.
Typen är IDataOutput eftersom data matas ut från den aktuella processen trots att det är en indataström från den underordnade processen.
Implementering
public function get standardInput():IDataOutput
Utlöser
IllegalOperationError — vid skrivning till det här värdet när running returnerar false eller vid försök att skriva data till en stängd indataström.
|
Relaterade API-element
standardOutput | egenskap |
standardOutput:IDataInput
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Ger tillgång till standardutdataröret för den här inbyggda processen. Använd det här röret för att läsa data från den inbyggda processens standardutdataström. NativeProcess-objektet skickar ett ProgressEvent när det finns data i detta rör. NativeProcess-objektet genererar ett EOFError om du försöker läsa data från strömmen när data saknas.
Typen är IDataInput eftersom data matas in från den aktuella processen trots att det är en utdataström från den underordnade processen.
Implementering
public function get standardOutput():IDataInput
Utlöser
EOFError — om inga data finns och ett försök att köra en läsåtgärd sker.
|
Relaterade API-element
NativeProcess | () | Konstruktor |
public function NativeProcess()
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Skapar ett oinitierat NativeProcess-objekt. Starta processen genom att anropa metoden start()
.
Relaterade API-element
closeInput | () | metod |
public function closeInput():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Stänger indataströmmen för den här processen. Vissa kommandoradsprogram väntar tills indataströmmen stängts innan vissa åtgärder startar. När strömmen är stängd kan den inte öppnas igen förrän processen avslutas och startas igen.
Händelser
ioErrorStandardInput: — Det går inte att stänga indataströmmen för processen
| |
standardInputClose: — Indataströmmen har stängts.
|
exit | () | metod |
public function exit(force:Boolean = false):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Försöker avsluta den inbyggda processen.
Parametrar
force:Boolean (default = false ) — Om programmet vid behov ska försöka att tvinga den inbyggda processen att avslutas.
Den här metoden försöker avsluta den inbyggda processen på ett kontrollerat sätt om parametern Den här metoden försöker tvinga den inbyggda processen att avslutas om parametern Om en NativeProcess avslutas, skickar den en |
start | () | metod |
public function start(info:NativeProcessStartupInfo):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Startar den inbyggda process som identifieras av angiven startinformation. Alla in- och utdataströmmar öppnas när processen startar. Den här metoden returneras omedelbart efter det att en begäran att starta den angivna processen har skickats till operativsystemet. NativeProcess-objektet genererar ett IllegalOperationError
-undantag om processen redan körs. Processen körs om egenskapen running
i NativeProcess-objektet returnerar värdet true
. Error
genereras om operativsystemet inte kan starta processen.
En NativeProcess-instans motsvarar en enda process i det underliggande operativsystemet. Om du vill köra mer än en instans av samma operativsystemsprocess samtidigt kan du skapa en NativeProcess-instans för varje underordnad process.
Du kan anropa den här metoden när egenskapen running
i NativeProcess-objektet returnerar värdet false
. Det innebär att NativeProcess-objektet kan återanvändas. Med andra ord kan du skapa en NativeProcess-instans, anropa start()
-metoden, vänta på exit
-händelsen och sedan anropa start()
-metoden igen. Du kan använda ett annat NativeProcessStartupInfo-objekt som värde för parametern info
i det efterföljande anropet av metoden start()
.
Klassen NativeProcess och dess funktioner är bara tillgängliga för AIR-program som installerats med det inbyggda installationsprogrammet. Vid felsökning kan du skicka argumentet -profile extendedDesktop
till ADL för att aktivera NativeProcess-funktionen. Du kan kontrollera egenskapen NativeProcess.isSupported
för att avgöra om inbyggd processkommunikation stöds.
Viktiga säkerhetsaspekter:
API:t för inbyggda processer kan köra alla körbara filer på användarens system. Du bör vara mycket försiktig när du konstruerar och kör kommandon. Om någon del av ett kommando som ska köras kommer från en extern källa kontrollerar du noga att det kommandot är säkert att köra. Ditt AIR-program bör dessutom också verifiera data som skickas till en process som körs.
Det kan dock vara svårt att verifiera indata. För att slippa den här typen av problem är det bäst att skriva ett inbyggt program (t.ex. en EXE-fil i Windows) med specifika API:er. De här API:erna bör bara bearbeta de kommandon som krävs för AIR-programmet. Till exempel kanske det inbyggda programmet bara accepterar en begränsad mängd instruktioner via standardindataströmmen.
Med AIR på Windows kan du inte köra .bat-filer direkt. I Windows körs .bat-filer av kommandotolken (cmd.exe). När du anropar en .bat-fil kan den här kommandotolken tolka de argument som skickas till kommandot som fler program som ska startas. Skadliga extratecken i argumentsträngen kan medföra att cmd.exe kör ett skadligt eller osäkert program. Utan korrekt dataverifiering kan ditt AIR-program till exempel anropa myBat.bat myArguments c:/evil.exe
. Kommandotolken skulle då starta programmet evil.exe utöver din .bat-fil.
Om du anropar metoden start()
med en .bat-fil genererar NativeProcess-objektet ett undantagsfel. Egenskapen message
i Error-objektet innehåller strängen "Fel #3219: Det gick inte att starta NativeProcess."
Parametrar
info:NativeProcessStartupInfo — NativeProcessStartupInfo Definierar information om hur den inbyggda processen startas.
|
Utlöser
IllegalOperationError — om en NativeProcess körs.
| |
ArgumentError — om egenskapen nativePath saknas för NativeProcessStartupInfo.
| |
Error — om en NativeProcess inte startade.
|
Relaterade API-element
exit | Händelse |
flash.events.NativeProcessExitEvent
egenskap NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att den inbyggda processen har avslutats. Egenskapen exitCode
innehåller det värde som processen returnerar till värdoperativsystemet när den avslutas. Om AIR-programmet avslutar processen genom att anropa metoden exit()
för NativeProcess-objektet anges egenskapen exitCode
som NaN.
standardErrorClose | Händelse |
flash.events.Event
egenskap Event.type =
flash.events.Event
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att NativeProcess har stängt sin felström.
standardErrorData | Händelse |
flash.events.ProgressEvent
egenskap ProgressEvent.type =
flash.events.ProgressEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att den inbyggda processen har data som är tillgängliga för läsning i standardfelströmmen (stderror). NativeProcess-objektet skickar den här händelsen när den underordnade processen tömmer sin standardfelström eller när den interna bufferten som används för kommunikation mellan processerna är full. Skriv inte kod som är beroende av storleken på den här interna bufferten, eftersom den skiljer sig mellan olika versioner och operativsystem.
standardErrorIoError | Händelse |
flash.events.IOErrorEvent
egenskap IOErrorEvent.type =
flash.events.IOErrorEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att läsning från standardfelströmmen (stderror) har misslyckats. NativeProcess-objektet kan skicka den här händelsen när miljön inte kan läsa data från den inbyggda processens standardfeldatarör.
standardInputClose | Händelse |
flash.events.Event
egenskap Event.type =
flash.events.Event
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att NativeProcess-objektet har stängt sin indataström genom att anropa metoden closeInput()
. NativeProcess-objektet skickar inte händelsen när den inbyggda processen själv stänger indataströmmen.
standardInputIoError | Händelse |
flash.events.IOErrorEvent
egenskap IOErrorEvent.type =
flash.events.IOErrorEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att skrivning till standardindataströmmen (stdin) har misslyckats. NativeProcess-objektet skickar händelsen när metoden closeInput()
misslyckas eller när körningen inte kan skriva data till den inbyggda processens standardindatarör.
standardInputProgress | Händelse |
flash.events.ProgressEvent
egenskap ProgressEvent.type =
flash.events.ProgressEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att NativeProcess har skrivit data till indataströmmen för den underordnade processen. NativeProcess-objektet skickar den här händelsen när data skrivs till strömmen. Händelsen betyder inte att den underordnade processen har läst några data.
standardOutputClose | Händelse |
flash.events.Event
egenskap Event.type =
flash.events.Event
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att NativeProcess har stängt sin utdataström.
standardOutputData | Händelse |
flash.events.ProgressEvent
egenskap ProgressEvent.type =
flash.events.ProgressEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att den inbyggda processen har data som är tillgängliga för läsning i utdataströmmen. NativeProcess-objektet skickar den här händelsen när den underordnade processen tömmer sin stdout-ström eller när den interna bufferten som används för kommunikation mellan processerna är full. Skriv inte kod som är beroende av storleken på den här interna bufferten, eftersom den skiljer sig mellan olika versioner och operativsystem.
standardOutputIoError | Händelse |
flash.events.IOErrorEvent
egenskap IOErrorEvent.type =
flash.events.IOErrorEvent
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Anger att läsning från standardutdataströmmen (stdout) har misslyckats. NativeProcess-objektet kan skicka den här händelsen när miljön inte kan läsa data från den inbyggda processens standardutdatarör.
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, 01:40 PM Z