но нет никакой апи из AS3 для вывода контента на стандартный вывод.
только бегущий процесс ОС может дать назад стандартного вывода (также называемый stdio
в C).
Лучшее, что вы можете сделать, это создать приложение, которое выглядит как инструмент командной строки, но на самом деле он просто запускает & передает данные в реальный (собственный) инструмент командной строки ОС. Смысл в вашем инструменте заключается в том, что вы записываете пользовательскую команду в строку, а затем запускаете nativeProcess
, используя эту (проанализированную) строку в качестве аргументов процесса.
Пример в ваших пользовательских типах приложений: calc
. Ваш AIR работает: c:\Windows\System32\calc.exe
В любом случае, на ваш реальный вопрос ...
Я пытаюсь использовать функцию PRINTF языка C для вывода контента, но это не работы.
Если вы имеете в виду вы сделали некоторые test.exe с C и когда вы получите AIR запустить его, вы хотите, чтобы захватить printf
выход, то вы можете попробовать:
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, CTest_OutputData);
или
process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, CTest_ErrorData);
Чтобы поймать выход (он будет отправлен как байты), убедитесь, что у вас есть общественностьbyteArray
и String
. Вот пример для STANDARD_ERROR_DATA
(скорее всего, вывод идет и здесь, поскольку вы утверждаете, что STANDARD_OUTPUT_DATA
не работает).
Код, показанный ниже внутри этой функции, работает одинаково в зависимости от того, какой тип progressEvent
вы выберете. Просто введите «правильный». temp_BA
- переменная byteArray, которую вы установили ранее.
public function CTest_ErrorData (event:ProgressEvent):void
{
process.standardOutput.readBytes(temp_BA, temp_BA.length, process.standardOutput.bytesAvailable);
if (temp_BA.length > 0)
{
temp_String = temp_BA.readUTFBytes(temp_BA.length);
trace("temp_String is : " + temp_String); //if you want to check it
}
}
Final TIP: Вы можете получить следы внутри Flash IDE, отключив «рабочий стол» и сохранение «расширенного рабочего стола» галочкой. Оба должны быть отмечены позже, когда вы устанавливаете приложение.
http://redtamarin.com/about – SushiHangover
нет такой вещи в AIR. – BotMaster
Я не проголосовал, но отредактировал ваш вопрос и покажите функциональный код того, как вы пытаетесь ** читать ** вывод 'printf'. Также придерживайтесь одной темы. Инструмент командной строки? или чтение некоторых **. EXE ** выход? –