#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 для получения некоторой другой информации, но он не содержит подробной информации о процессоре, о которой я знаю.