package { import flash.desktop.NativeProcess; import flash.desktop.NativeProcessStartupInfo; import flash.system.Capabilities; import flash.events.IOErrorEvent; import flash.events.NativeProcessExitEvent; import flash.events.ProgressEvent;
public class Test { function Test() { super(); _setupAndLaunch(); }
private function onProcessOutput( event:ProgressEvent ):void { var data:String = _process.standardOutput.readUTFBytes( _process.standardOutput.bytesAvailable ); trace( "stdout: " + data ); } private function onProcessError( event:ProgressEvent ):void { trace("stderr: " + _process.standardError.readUTFBytes( _process.standardError.bytesAvailable ) ); } private function onProcessExit( event:NativeProcessExitEvent ):void { trace( "Process exited with " + event.exitCode ); } private function onProcessIOError( event:IOErrorEvent ):void { trace( event.toString() ); } private function _getPlatform():String { var platform:String = ""; var manufacturer:String = Capabilities.manufacturer; if( (manufacturer != "") && (manufacturer.indexOf( " " ) > -1) ) { var tmp:String = manufacturer.split( " " )[1]; platform = tmp.toLowerCase(); } else { platform = manufacturer.toLowerCase(); } return platform; } private function _setupAndLaunch():void { var filepath:String; var args:Vector.<String> = new Vector.<String>(); switch( _getPlatform() ) { case "windows": // very weak way to do it filepath = "C:\\Windows\\System32\\cmd.exe"; args[0] = "/C"; args[1] = "echo %USERNAME%"; break; case "macintosh": case "linux": filepath = "/bin/sh"; args[0] = "-c"; args[1] = "echo $USER"; break; } var file:File = new File( filepath ); if( file.exists ) { var startupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); startupInfo.executable = file; startupInfo.arguments = args; _process = new NativeProcess(); _process.addEventListener( ProgressEvent.STANDARD_OUTPUT_DATA, onProcessOutput ); _process.addEventListener( ProgressEvent.STANDARD_ERROR_DATA, onProcessError ); _process.addEventListener( NativeProcessExitEvent.EXIT, onProcessExit ); _process.addEventListener( IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onProcessIOError ); _process.addEventListener( IOErrorEvent.STANDARD_ERROR_IO_ERROR, onProcessIOError ); _process.start( startupInfo ); } else { trace( "file '" + filepath + "' does not exists" ); } } } } |