AIR - NativeProcess с Sytem Profiler на Mac - PullRequest
0 голосов
/ 27 апреля 2011

Я пытаюсь использовать Adobe AIR NativeProcess в приложении Flex для создания XML-файла, который я могу проанализировать для получения различной системной информации на Mac (у меня есть аналог, работающий в Windows, и я не очень знаком с Mac). Мне нужна информация в основном о процессоре.

Я не могу вызвать системный профилировщик и передать правильные параметры (или любые параметры), чтобы заставить NativeProcess правильно работать.

Если я установлю исполняемый файл NativeProcess равным:

/ Приложения / Утилиты / System Profiler.app/Contents/MacOS/System Profiler

он выполняется, но я вижу всплывающие результаты на экране (он игнорирует мои аргументы, чтобы сохранить его в файл, который, я считаю, имеет смысл, поскольку это версия с графическим интерфейсом).

Если я установлю исполняемый файл NativeProcess равным:

user / sbin / system_profiler или просто system_profiler

ничего не выполняется, и я получаю ArgumentError # 2004 на строке, где я назначаю исполняемый файл.

Параметры примерно такие:

systemDataMac.npArgList = ["-xml", ">", systemDataFileName, "- detailLevel", "basic"];

Как правильно сгенерировать этот файл (или есть какой-нибудь другой способ получить информацию о процессоре непосредственно в моем приложении 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());
        }

1 Ответ

0 голосов
/ 27 апреля 2011

Какая информация вам нужна? Вы смотрели на класс Capabilities ?

...