#actionscript-3 #pipe #flash
#actionscript-3 #канал #flash
Вопрос:
Я хочу отправить данные, сгенерированные модулем flash, во внешний исполняемый файл в Windows. Из того, что я узнал о межпроцессном взаимодействии, я думаю, что в этом случае уместно использовать каналы. Я использую Flash professional CS5, и когда в actionscript используется команда ‘trace’, результат будет отображаться в окне вывода во flash professional. Я думаю, что Flash передает данные в окно вывода, и если да, возможно ли получить дескриптор этого канала. Есть ли способ, с помощью которого я могу записать выходные данные из самого flash Player при выполнении команд трассировки или данные, сгенерированные по событию, непосредственно в буфер канала.
Пожалуйста, помогите мне. Заранее спасибо.
Ответ №1:
Я проделал несколько трюков, используя значок Flash, приложение AIR. и консольное приложение C #.. Мы можем отправлять параметры в AIR app. from BADGE и получать их с помощью:
protected function onInit(event:FlexEvent):void{
NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE, onBrowserInvoke);}
protected function onBrowserInvoke(e:BrowserInvokeEvent):void{
//reading args
var a:String = e.arguments[0];
//Now we can run *.exe from windows using:
if(NativeProcess.isSupported)
{
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = File.applicationDirectory.resolvePath("ExecutableApp.exe");
nativeProcessStartupInfo.arguments.push(a);
var process:NativeProcess = new NativeProcess();
//dispatched when the process will be finished
process.addEventListener(NativeProcessExitEvent.EXIT,onProcessDone);
//run
process.start(nativeProcessStartupInfo);
}
else Alert.show("Native process are not supportednPrinter settings may be wrong!");
}
Это долгий путь, но, безусловно, работает! По крайней мере, у меня это сработало.
Комментарии:
1. Спасибо за информацию и код, Алекс. На самом деле я новичок в программировании на Actionscript, и некоторые пояснения к коду от вас были бы действительно полезны. Команды вывода в моем flash-модуле генерируются при нажатии кнопки. Также мой модуль является автономным, поэтому я не думаю, что BrowserInvokeEvent может быть сгенерирован в моем случае. Также, когда вы использовали «ExecutableApp.exe «вы имели в виду, что это имя приложения, которое будет открыто Flash.
2. Если да, то где должен быть размещен файл .exe и выполняется ли это только для приложений AIR. Также вначале код начинает работать при создании FlexEvent. Как я могу изменить это в соответствии со своими потребностями. Спасибо
3. 1) Создайте воздушный значок — руководство Это может быть простая кнопка на веб-странице или большое приложение, которое взаимодействует с сервером. При нажатии на кнопку запустится AIR app, и BrowserInvokeEvent будет отправлен внутри AIR app. После этого вы можете свободно запускать exe-приложение, используя приведенный выше код. 2) Создайте приложение AIR. — Руководство Flash — > AIR -> EXE (*.exe можно разместить где угодно)