Pakiet | flash.desktop |
Klasa | public class NativeProcess |
Dziedziczenie | NativeProcess EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Klasa NativeProcess i jej możliwości dostępne są tylko dla aplikacji AIR zainstalowanych za pomocą rodzimego programu instalacyjnego (aplikacje z rozszerzonym profilem aplikacji lokalnej). Podczas debugowania można przekazać do programu argument -profile extendedDesktop
w celu włączenia funkcjonalności klasy NativeProcess. W czasie wykonywania można odczytać wartość właściwości NativeProcess.isSupported
w celu ustalenia, czy obsługiwana jest komunikacja z procesami natywnymi.
Obsługa profilów aplikacji AIR: Ta funkcja jest obsługiwana w aplikacjach wdrażanych w stacjonarnych systemach operacyjnych przy użyciu instalatorów rodzimych. Ta funkcja nie jest obsługiwana na urządzeniach przenośnych ani na urządzeniach telewizyjnych ze środowiskiem AIR. W czasie wykonywania można sprawdzić, czy funkcja jest obsługiwana, odczytując właściwość NativeProcess.isSupported
. Więcej informacji o obsłudze elementów interfejsu API w różnych profilach można znaleźć w sekcji Obsługa profilów aplikacji AIR.
Aplikacje AIR zainstalowane za pomocą rodzimego programu instalacyjnego (aplikacje z rozszerzonym profilem aplikacji lokalnej) mogą także otwierać inne aplikacje za pomocą metody File.openWithDefaultApplication
. Jednak klasa NativeProcess zapewnia bezpośredni dostęp do potoków standardowego wejścia, wyjścia i błędów.
Uwaga: Aplikacje AIR dla urządzeń telewizyjnych używające profilu extendedTV
mogą korzystać z rozszerzeń natywnych w celu wykonywania procesów natywnych. Również urządzenia przenośne mogą korzystać z rozszerzeń natywnych.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Wskazuje, czy uruchamianie procesów natywnych jest obsługiwane w bieżącym profilu. | NativeProcess | ||
running : Boolean [tylko do odczytu]
Wskazuje, czy ten proces natywny jest obecnie uruchomiony. | NativeProcess | ||
standardError : IDataInput [tylko do odczytu]
Udostępnia standardowy strumień błędów tego procesu natywnego. | NativeProcess | ||
standardInput : IDataOutput [tylko do odczytu]
Umożliwia dostęp do standardowego strumienia wejściowego tego procesu natywnego. | NativeProcess | ||
standardOutput : IDataInput [tylko do odczytu]
Umożliwia dostęp do standardowego potoku wyjściowego tego procesu natywnego. | NativeProcess |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Konstruuje niezainicjowany obiekt NativeProcess. | NativeProcess | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Zamyka strumień wejściowy tego procesu. | NativeProcess | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Podejmuje próbę zakończenia procesu natywnego. | NativeProcess | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Uruchamia proces natywny wskazany przez podane informacje dotyczące uruchamiania. | NativeProcess | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Sygnalizuje, że proces natywny zakończył działanie. | NativeProcess | |||
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień błędów. | NativeProcess | |||
Sygnalizuje, że proces natywny ma dane dostępne do odczytu ze standardowego strumienia błędów (stderror). | NativeProcess | |||
Sygnalizuje, że odczyt ze standardowego strumienia błędów (stderror) nie powiódł się. | NativeProcess | |||
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień wejściowy poprzez wywołanie metody closeInput(). | NativeProcess | |||
Sygnalizuje, że zapis do standardowego strumienia wejściowego (stdin) nie powiódł się. | NativeProcess | |||
Sygnalizuje, że obiekt NativeProcess zapisał dane do strumienia wejściowego procesów potomnych. | NativeProcess | |||
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień wyjściowy. | NativeProcess | |||
Sygnalizuje, że proces natywny ma dane dostępne do odczytu ze standardowego strumienia wyjściowego (stdout). | NativeProcess | |||
Sygnalizuje, że odczyt ze strumienia stdout nie powiódł się. | NativeProcess |
isSupported | właściwość |
isSupported:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Wskazuje, czy uruchamianie procesów natywnych jest obsługiwane w bieżącym profilu. Ta właściwość zwraca wartość true
tylko wtedy, gdy aplikacja działa w profilu extendedDesktop. Ponadto parametr NativeProcess.isSupported
ma zawsze wartość false
dla aplikacji zainstalowanych jako pliki AIR. Aby używać klasy NativeProcess, należy spakować aplikację AIR przy użyciu flagi ADT -target native
.
Implementacja
public static function get isSupported():Boolean
running | właściwość |
running:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Wskazuje, czy ten proces natywny jest obecnie uruchomiony. Proces jest uruchomiony, jeśli wywołano metodę start()
, a obiekt NativeProcess nie wywołał jeszcze zdarzenia exit
. Wystąpienie klasy NativeProcess jest odpowiednikiem pojedynczego procesu w podstawowym systemie operacyjnym. Właściwość ma wartość true
tak długo, jak wykonywany jest proces w systemie operacyjnym (w trakcie uruchamiania procesu i później, do momentu, aż proces zwróci kod wyjścia do systemu operacyjnego).
Implementacja
public function get running():Boolean
standardError | właściwość |
standardError:IDataInput
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Udostępnia standardowy strumień błędów tego procesu natywnego. W miarę jak dane stają się dostępne w tym potoku, obiekt NativeProcess wywołuje zdarzenia ProgressEvent. Próba odczytania danych z tego strumienia, gdy nie ma dostępnych danych, powoduje, że obiekt NativeProcess generuje wyjątek EOFError.
Typem danych jest IDataInput, ponieważ z perspektywy bieżącego procesu dane są wprowadzane, mimo że strumień jest strumieniem wyjściowym procesu potomnego.
Implementacja
public function get standardError():IDataInput
Zgłasza
EOFError — jeśli nie ma dostępnych danych, a została podjęta próba odczytu.
|
Powiązane elementy interfejsu API
standardInput | właściwość |
standardInput:IDataOutput
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Umożliwia dostęp do standardowego strumienia wejściowego tego procesu natywnego. Ten potok służy do wysyłania danych do procesu. Każdy zapis danych do właściwości input
powoduje możliwie najszybsze zapisanie danych do potoku wejściowego procesu natywnego.
Typem danych jest IDataOutput, ponieważ z perspektywy bieżącego procesu dane są wyprowadzane, mimo że strumień jest strumieniem wejściowym procesu potomnego.
Implementacja
public function get standardInput():IDataOutput
Zgłasza
IllegalOperationError — Przy próbie zmiany tej wartości, gdy właściwość running zwraca false , lub przy próbie zapisania danych do zamkniętego strumienia wejściowego.
|
Powiązane elementy interfejsu API
standardOutput | właściwość |
standardOutput:IDataInput
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Umożliwia dostęp do standardowego potoku wyjściowego tego procesu natywnego. Ten potok umożliwia odczytywanie danych ze standardowego strumienia wejściowego procesu natywnego. Gdy dane są dostępne w potoku, obiekt NativeProcess wywołuje zdarzenie ProgressEvent. Próba odczytania danych z tego strumienia, gdy nie ma dostępnych danych, powoduje, że obiekt NativeProcess generuje wyjątek EOFError.
Typem danych jest IDataInput, ponieważ z perspektywy bieżącego procesu dane są wprowadzane, mimo że strumień jest strumieniem wyjściowym procesu potomnego.
Implementacja
public function get standardOutput():IDataInput
Zgłasza
EOFError — Jeśli nie ma dostępnych danych, a została podjęta próba odczytu.
|
Powiązane elementy interfejsu API
NativeProcess | () | Konstruktor |
public function NativeProcess()
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Konstruuje niezainicjowany obiekt NativeProcess. W celu uruchomienia procesu należy wywołać metodę start()
.
Powiązane elementy interfejsu API
closeInput | () | metoda |
public function closeInput():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Zamyka strumień wejściowy tego procesu. Niektóre aplikacje wiersza poleceń czekają z rozpoczęciem pewnych operacji na zamknięcie strumienia wejściowego. Zamkniętego strumienia nie można ponownie otworzyć, dopóki proces nie zostanie zakończony i ponownie uruchomiony.
Zdarzenia
ioErrorStandardInput: — Wystąpił błąd podczas próby zamknięcia strumienia wejściowego do procesu.
| |
standardInputClose: — Strumień wejściowy został zamknięty.
|
exit | () | metoda |
public function exit(force:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Podejmuje próbę zakończenia procesu natywnego.
Parametry
force:Boolean (default = false ) — Określa, czy aplikacja powinna w razie potrzeby podejmować próby wymuszonego kończenia procesów natywnych.
Jeśli parametr Jeśli parametr Jeśli zakończenie działania procesu NativeProcess nie powiedzie się, wywoływane jest zdarzenie |
start | () | metoda |
public function start(info:NativeProcessStartupInfo):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Uruchamia proces natywny wskazany przez podane informacje dotyczące uruchamiania. Po uruchomieniu procesu wszystkie strumienie wejściowe i wyjściowe zostaną otwarte. Powrót z tej metody następuje natychmiast po przesłaniu do systemu operacyjnego żądania uruchomienia określonego procesu. Obiekt NativeProcess generuje wyjątek IllegalOperationError
, jeśli proces jest obecnie uruchomiony. Proces jest uruchomiony, jeśli właściwość running
obiektu NativeProcess zwraca wartość true
. Jeśli system operacyjny nie może uruchomić procesu, generowany jest wyjątek Error
.
Instancja NativeProcess jest odpowiednikiem pojedynczego procesu w bazowym systemie operacyjnym. Aby współbieżnie wykonywać więcej niż jedną instancję tego samego procesu w systemie operacyjnym, można utworzyć po jednej instancji klasy NativeProcess na każdy proces potomny.
Metodę tę można wywołać zawsze, gdy właściwość running
obiektu NativeProcess zwraca wartość false
. Oznacza to, że obiektu NativeProcess można używać ponownie. Innymi słowy, można skonstruować instancję klasy NativeProcess, wywołać metodę start()
, poczekać na zdarzenie exit
, a następnie ponownie wywołać metodę start()
. Jako wartości parametru info
w następnym wywołaniu metody start()
można użyć innego obiektu NativeProcessStartupInfo niż w poprzednim wywołaniu.
Klasa NativeProcess i jej możliwości dostępne są tylko dla aplikacji AIR zainstalowanych za pomocą natywnego programu instalacyjnego. Podczas debugowania można przekazać do programu argument -profile extendedDesktop
w celu włączenia funkcji klasy NativeProcess. Można odczytać wartość właściwości NativeProcess.isSupported
w celu ustalenia, czy obsługiwana jest komunikacja z procesami natywnymi.
Ważne uwagi na temat bezpieczeństwa:
Interfejs API procesu rodzimego może uruchamiać dowolne pliki wykonywalne w systemie użytkownika. Podczas konstruowania i wykonywania poleceń należy zachować szczególną ostrożność. Jeśli jakakolwiek część polecenia do wykonania pochodzi z zewnętrznego źródła, wówczas należy dokładnie sprawdzić, czy jej wykonanie jest bezpieczne. Analogicznie w aplikacji AIR użytkownika należy sprawdzić poprawność danych przekazywanych do działającego procesu.
Sprawdzanie poprawności danych wejściowych może być trudne. Najlepszym rozwiązaniem, które pozwala uniknąć trudności, jest utworzenie aplikacji rodzimej (np. pliku EXE w systemie Windows) zawierającej konkretne, charakterystyczne dla niej punkty wywołań interfejsu API. Interfejs API powinny przetwarzać tylko te polecenia, które są wymagane przez aplikację AIR. Na przykład: rodzima aplikacja może akceptować jedynie ograniczony zestaw instrukcji ze standardowego strumienia wejściowego.
Środowisko AIR w systemie Windows nie zezwala na bezpośrednie uruchamianie plików BAT. Pliki BAT systemu Windows są wykonywane w aplikacji interpretera poleceń (cmd.exe). Po wywołaniu pliku BAT ta aplikacja poleceń może zinterpretować argumenty przekazane do polecenia jako dodatkowe aplikacje do uruchomienia. Złośliwe wpisanie dodatkowych znaków w ciągu znaków argumentu może spowodować wykonanie przez interpreter cmd.exe szkodliwej lub niebezpiecznej aplikacji. Na przykład: brak sprawdzenia poprawności danych może spowodować, że aplikacja AIR wywoła polecenie myBat.bat myArguments c:/evil.exe
. Aplikacja, poza plikiem wsadowym, uruchomi wówczas dodatkowo aplikację evil.exe.
Wywołanie metody start()
z plikiem BAT powoduje zgłoszenie wyjątku przez obiekt NativeProcess. Właściwość message
obiektu Error zawiera ciąg znaków "Error #3219: The NativeProcess could not be started.".
Parametry
info:NativeProcessStartupInfo — NativeProcessStartupInfo Definiuje informacje o sposobie uruchamiania procesu natywnego.
|
Zgłasza
IllegalOperationError — jeśli proces NativeProcess jest obecnie uruchomiony.
| |
ArgumentError — jeśli właściwość nativePath obiektu NativeProcessStartupInfo nie istnieje.
| |
Error — jeśli uruchomienie procesu NativeProcess nie powiodło się.
|
Powiązane elementy interfejsu API
exit | Zdarzenie |
flash.events.NativeProcessExitEvent
właściwość NativeProcessExitEvent.type =
flash.events.NativeProcessExitEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że proces natywny zakończył działanie. Właściwość exitCode
zawiera wartość, którą proces zwrócił do systemu operacyjnego hosta w momencie zakończenia działania. Jeśli aplikacja AIR zakończy proces, wywołując metodę exit()
obiektu NativeProcess, właściwości exitCode
zostanie przypisana wartość NaN.
standardErrorClose | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień błędów.
standardErrorData | Zdarzenie |
flash.events.ProgressEvent
właściwość ProgressEvent.type =
flash.events.ProgressEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że proces natywny ma dane dostępne do odczytu ze standardowego strumienia błędów (stderror). Obiekt NativeProcess wywołuje to zdarzenie, gdy proces potomny opróżni swój standardowy strumień błędów lub gdy wewnętrzny bufor używany do komunikacji między procesami jest zapełniony. Nie należy uzależniać działania kodu od rozmiaru buforu wewnętrznego; rozmiar buforu jest różny w poszczególnych wersjach i systemach operacyjnych.
standardErrorIoError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że odczyt ze standardowego strumienia błędów (stderror) nie powiódł się. Obiekt NativeProcess może wywołać to zdarzenie, gdy środowisko wykonawcze nie będzie mogło odczytać danych ze standardowego potoku błędów procesu natywnego.
standardInputClose | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień wejściowy poprzez wywołanie metody closeInput()
. Obiekt NativeProcess nie wywołuje tego zdarzenia, gdy proces natywny sam zamknie strumień wejściowy.
standardInputIoError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że zapis do standardowego strumienia wejściowego (stdin) nie powiódł się. Obiekt NativeProcess wywołuje to zdarzenie, gdy wykonanie metody closeInput()
nie powiedzie się lub gdy środowisko wykonawcze nie może zapisać danych w standardowym potoku wejściowym procesu natywnego.
standardInputProgress | Zdarzenie |
flash.events.ProgressEvent
właściwość ProgressEvent.type =
flash.events.ProgressEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że obiekt NativeProcess zapisał dane do strumienia wejściowego procesów potomnych. Obiekt NativeProcess wywołuje to zdarzenie, gdy dane są zapisywane do strumienia. To zdarzenie nie wskazuje, czy proces odczytał jakieś dane.
standardOutputClose | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że obiekt NativeProcess zamknął swój strumień wyjściowy.
standardOutputData | Zdarzenie |
flash.events.ProgressEvent
właściwość ProgressEvent.type =
flash.events.ProgressEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że proces natywny ma dane dostępne do odczytu ze standardowego strumienia wyjściowego (stdout). Obiekt NativeProcess wywołuje to zdarzenie, gdy proces potomny opróżni swój standardowy strumień wyjściowy lub gdy wewnętrzny bufor używany do komunikacji między procesami jest zapełniony. Nie należy uzależniać działania kodu od rozmiaru buforu wewnętrznego; rozmiar buforu jest różny w poszczególnych wersjach i systemach operacyjnych.
standardOutputIoError | Zdarzenie |
flash.events.IOErrorEvent
właściwość IOErrorEvent.type =
flash.events.IOErrorEvent
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Sygnalizuje, że odczyt ze strumienia stdout nie powiódł się. Obiekt NativeProcess może wywołać to zdarzenie, gdy środowisko wykonawcze nie będzie mogło odczytać danych ze standardowego potoku wyjściowego procesu natywnego.
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, 12:06 PM Z