AIR — NativeProcess с системным профилировщиком на Mac

#apache-flex #actionscript-3 #air

#apache-flex #actionscript-3 #air

Вопрос:

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

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

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

/Приложения / Утилиты/Системный профилировщик.app/Содержимое /macOS / Системный профилировщик

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

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

пользователь / 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. Покажите некоторый код о том, как вы пытаетесь его запустить.

2. Это должен быть эквивалентный код.

Ответ №1:

Какого рода информация вам нужна? Вы ознакомились с классом Capabilities?

Комментарии:

1. Я ищу описание процессора, скорость и количество ядер. Я использую класс Capabilities для получения некоторой другой информации, но он не содержит подробной информации о процессоре, о которой я знаю.