AIRから外部アプリケーションを実行するのは、セキュリティの観点からかなり条件が厳しくなっています。
詳しくは、Adobeのリファレンス
http://help.adobe.com/ja_JP/FlashPlatform/reference/actionscript/3/flash/desktop/NativeProcess.html
を参照して頂くのが良いと思いますが、
「ネイティブインストーラー(拡張デスクトッププロファイルアプリケーション)を使用してインストールされた AIR アプリケーション」でしか実行できません。
デバッグ(adlを利用)のときは、「-profile extendedDesktop」のオプションを付ける必要があります。
batchfileの所に、実行したいファイルを入れるとAIRからキック出来ます。
ランチャーとか作るのに便利です。
ランチャーとか作るのに便利です。
private function exec(batchfile:String):void { var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); var file:File = new File("C:\\Windows\\System32\\cmd.exe"); nativeProcessStartupInfo.executable = file; var processArgs:Vector.= new Vector. (); processArgs.push("/c"); processArgs.push(batchfile); nativeProcessStartupInfo.arguments = processArgs; process = new NativeProcess(); process.addEventListener(NativeProcessExitEvent.EXIT, onProcExit); //終了を待って処理を入れたい場合 process.start(nativeProcessStartupInfo); } public function onProcExit(event:NativeProcessExitEvent) { process.removeEventListener(NativeProcessExitEvent.EXIT, onProcExit); //終了時の処理をここに入れる trace(event.exitCode); //終了コードも取れます。 }
バッチファイル実行しても、コマンドラインウィンドウが出てこないので、
動作確認はログを別途出力するなどの必要があります。
運用者から、あるファイルを監視して1時間変化がなかったらバッチファイルをキックしたいというリクエストがあったので作成しました。その時に調べたものの備忘録です。
機会があれば、そちらのランチャも公開できたらと思います。