2

タイトルとして、どのコマンド/クラスを使用できますか? 関数が存在する場合、コマンドシェルからコールバックを取得する関数は?

4

1 に答える 1

2

この記事に従って、AIR で他のプロセスを実行して通信することができます。

そのため、Windows コマンド プロンプトを実行する場合は、cmd.exe の場所 ("%windir%\system32\cmd.exe") を指定する必要があります。残念ながら、AIR は %windir% を認識できないため、実際には Windows ディレクトリへのフル パスを指定する必要があります (通常は C: ですが、C: でない場合の処理​​方法を理解する必要があります)。

厄介なことに、コマンド プロンプトは通常の入力ストリームのようには機能しないようです。書き込もうとするとエラーが発生します。自分の知らない方法があるのか​​もしれません。代わりに、引数を指定してコマンド プロンプトを起動することができます。

たとえば、次のコードはコマンド プロンプトを起動し (Windows が C であると仮定)、"hello" を出力し、出力をトレースします (この場合は単に "hello" になります)。

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
var file:File = File.applicationDirectory.resolvePath("C:\\Windows\\System32\\cmd.exe"); 
nativeProcessStartupInfo.executable = file; 
var processArgs:Vector.<String> = new Vector.<String>(); 
processArgs.push("/C echo 'hello'");
nativeProcessStartupInfo.arguments = processArgs; 
process = new NativeProcess(); 
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
process.start(nativeProcessStartupInfo);

public function onOutputData(event:ProgressEvent):void 
{ 
    trace("Got: ", NativeProcess(event.target).standardOutput.readUTFBytes(process.standardOutput.bytesAvailable)); 
}
于 2013-01-03T05:05:21.920 に答える