2011-04-26 42 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