2011-04-26 47 views
0

我试图在Flex应用程序中使用Adobe AIR NativeProcess来生成一个XML文件,我可以解析它以获取Mac上的各种系统信息(我拥有与Windows等效的工具,我对Mac不是很熟悉)。我主要需要关于CPU的信息。AIR - 使用Sytem Profiler的NativeProcess在Mac上

我无法调用系统分析器并传递适当的参数(或任何参数)以使NativeProcess正确执行。

如果我设置的NativeProcess执行以:

/应用程序/实用/系统Profiler.app/Contents/MacOS/System探查

它执行的,但我在屏幕上看到的结果弹出(它忽略我的论点将它保存到一个文件中,我认为这是一个文件,因为它是GUI版本)。

如果我设置的NativeProcess执行以:

用户/ sbin目录/ system_profiler或只是system_profiler

没有执行,我收到一个ArgumentError#2004年,我分配可执行行。

的参数是这样的:

systemDataMac.npArgList = [ “-xml”, “>”,systemDataFileName, “ - detailLevel”, “基本”];

我怎样才能得到正确生成该文件(或有任何其他方法直接获得的CPU信息到我的Flex/AIR应用程序

谢谢

示例代码:?!

 var nativeProcess:NativeProcess=new NativeProcess(); 
     var startupInfo:NativeProcessStartupInfo=new NativeProcessStartupInfo(); 
     var npArgs:Array = []; 
     var appDataDir:File = File.applicationStorageDirectory; 
     var nativeFilePath:String = appDataDir.nativePath.toString(); 

     nativeFilePath+= File.separator + "systemInfoFile.xml"; 

     nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onExit); 
     nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
     nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData); 
     nativeProcess.addEventListener(IOErrorEvent.STANDARD_INPUT_IO_ERROR, onInputIOError); 
     nativeProcess.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onOutputIOError); 

     try 
     { 
      // tried each of these three 
      startupInfo.executable=new File("system_profiler"); // throws error 
      startupInfo.executable=new File("/user/sbin/system_profiler"); // throws error 
      startupInfo.executable=new File("/Applications/Utilities/System Profiler.app/Contents/MacOS/System Profiler"); // works but doesn't handle args because it is the GUI version I believe 

      npArgs = ["-xml",">", nativeFilePath,"-detailLevel","basic"]; 

      var args:Vector.<String>=new Vector.<String>(); 
      for each(var item:String in npArgs) 
      { 
       args.push(item); 
      } 

      startupInfo.arguments=args; 

      nativeProcess.start(startupInfo); 

     } 
     catch (error:IllegalOperationError) 
     { 
      trace("Illegal Operator Error - " + error.toString()); 
     } 
     catch (error:ArgumentError) 
     { 
      trace("Arg Error - " + error.toString()); 
     } 
     catch (error:Error) 
     { 
      trace("Error - " + error.toString()); 
     } 
+0

显示你如何试图运行它的一些代码。 – 2011-04-27 12:30:58

+0

ŧ他应该是等效的代码。 – ImAStreamer 2011-04-27 14:22:21

回答

0

你需要什么样的信息?你吃过看看Capabilities类?

+0

我正在查找CPU描述,速度和内核数量。我正在使用Capabilities类来获取其他信息,但它没有包含我知道的详细CPU信息。 – ImAStreamer 2011-04-26 21:16:17