2013-05-14 1 views
0

J'ai besoin de faire quelque chose de très simple avec NativeProcess, j'ai besoin de lancer un fichier .exe via la ligne cmd et lui passer un paramètre. J'ai trouvé des exemples NativeProcess mais ils sont tous pour des choses beaucoup plus complexes et ne montrent pas une implémentation complète. J'ai beaucoup d'expérience avec flash as3 mais pas dans ce domaine particulier ... si quelqu'un pouvait me montrer comment cela se fait du début à la fin, j'apprécierais énormément.Comment implémenter l'application NativeProcess dans Air

+0

http://gotoandlearn.com/play.php?id=125 - c'est un bon point de départ. – Tox

Répondre

2

Voici le code à partir du site d'Adobe pour faire exactement ce que vous demandez:

package 
{ 
    public class Main extends Sprite 
    { 
     public var process:NativeProcess; 

     public function Main() 
     { 
      if(NativeProcess.isSupported) 
       setupAndLaunch(); 
      else 
       trace("NativeProcess not supported."); 
     } 

     public function setupAndLaunch():void 
     {  
      var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
      var file:File = File.applicationDirectory.resolvePath("yourapp.exe"); 
      nativeProcessStartupInfo.executable = file; 

      var processArgs:Vector.<String> = new Vector.<String>(); 
      processArgs[0] = "the parameter you are passing"; 
      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()); 
     } 
    } 
} 

et informations importantes The NativeProcess class and its capabilities are only available to AIR applications installed with a native installer (extended desktop profile applications). When debugging, you can pass the -profile extendedDesktop argument to ADL to enable the NativeProcess functionality. At runtime, you can check the NativeProcess.isSupported property to to determine whether native process communication is supported.

Je l'ai testé ci-dessus en Flash Développer en définissant le profil d'application à Extended Desktop et il fonctionne .

Plus d'infos here.

Questions connexes