我试图在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());
}
显示你如何试图运行它的一些代码。 – 2011-04-27 12:30:58
ŧ他应该是等效的代码。 – ImAStreamer 2011-04-27 14:22:21