Как отправить данные из flash Player во внешний исполняемый файл через канал

#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 можно разместить где угодно)