shellexec
или exec
и т.п. И это меня категорически огорчило. Потратив 3 часа на изучение вопроса в интернете узнал следующее:navigateURL
Этим методом мы натравливаем браузер на локальный файл и (если браузер достаточно умный) он предложит открыть нам этот файл в дефолтном приложении(для данного типа файла) .
Но тут все минусы на лицо: захотели Вы из AIR открыть doc-овский файл (или экселевский), а он запускает браузер. Браузер,в свою очередь, открывается, думает маленько и выкидывает окошко: Тут мне вот такое файло подсунули, чо с ним делать? Сохранять или открывать штоле?.
Не очень умный вопрос, если человек только что в приложении нажимал кнопку "хочу ОТКРЫТЬ этот файл". Ну и вообще, я бы не взялся гарантировать работы всей этой схемы на разных компах. А что делать если вам надо запустить batch-скрипт? Браузер(firefox) даже вопросов не задаёт - просто открывает вкладку с текстом скрипта вместо того, чтобы попытатся его запустить. И я его (firefox) понимаю :)
fscommand
. В AIR она не работает, хотя и компилится. Проверял сам. Если я не прав и чего-то не доглядел, поправьте.swing UI
и использовать AIR в качестве фронтенда приложения, а начинку оставить Java'вскую. Мне это было интересно, потому что как раз с джавой и надо было скооперироватся. Но до конца я ещё не разобрался с этой темой. Разберусь - напишу.P.S. Как правильно заметил nuba Merapi это реинкарнация Artemis project
Она оборачивает AIR-приложение в собственый загрузчик, который интегрируется c AirRuntime, т.е. на выходе вы получаете просто экзешник, которому ничего не надо, и пользователь даже не будет знать что такое AIR и его Runtime. Кроме того, он добавляет как раз тот функционал который мне был нужен, а именно: запуск внешних приложений с коллбэком по результату их выполнения.
Кроме того, есть возможность написать свою
win32 dll
, функции которой будут доступны в AIR приложении. А это, по сути, уже полная свобода действий внутри операционки(виндовой правда). Вот. Но! Cтоит это дело 500 баксов (или евро?). Это раз. И два. Я не смог всё это протестить (скачал бесплатную Try&Buy версию ). По каким-то там лицензионным заморочкам Shu не может включать в себя дистрибутив
AirRuntime
, поэтому, при завёртывании приложения оно как-то невнятно просит указать "путь к air runtime". Но какие бы я пути не указывал - ни один из них ему не нравился и процесс завершить не удавалось. Так я и не понял это баг или фича или лыжи не те или я...На написание серверка в C# у меня ушло полчаса, as-класса для взаимодействия - 10 минут. Плюс отладка всего этого дела в связке. В итоге время было потрачено меньше, чем на чтение статей по вопросу :)) Что даёт такое решение? Да всё! :) Хочешь юзай .NET из Air, хочешь Java, коннекться к COM-порту, форматируй финчестер :))) и т.д.
Если кому интересно могу все поделки повыкладывать .
З.Ы.
Выкладываю:
1)С# сервер
2) Пример посылки команды из AIR-приложения
socket=new Socket();
socket.connect("localhost",7777);
socket.writeUTFBytes("$run myextapp.exe;");
socket.flush();
14 комментариев:
http://artemis.effectiveui.com/
Я использовал вот это :)
А можно исходники всей этой прелести увидеть. Уж больно интересно, как это всё работает. Заранее спасибо)
Порт это несколько плохо
всякие фаерволы, может другой софт порты перекрывают... ругаццо будет
localConnection помоему лучше
гтето видел как челы c помощью джойстика для Nintendo Wii управляют флеш приложениями помоему юзают LC
согласен socketы и фаерволы - могут быть проблемы. есть задумка сделать обмен данными через файл. По поводу localConnection - буду рыть, но при беглом осмотре мне показалось что эта технология не существует за пределами flash-плеера и соотвественно внешние приложения не могут получить к ней доступ.
вот наглядный пример:
http://www.darronschall.com/lc/lc.cfm
работает )
В рот мне ноги! Дэвид Блэйн! Как он это делает? :) Понял, будем копать :)
>По поводу localConnection - буду рыть, но при беглом осмотре мне показалось что эта технология не существует за пределами flash-плеера и соотвественно внешние приложения не могут получить к ней доступ.
http://osflash.org/localconnection
вырабатывая это решение вы забыли про существование операционок кроме windows.
ждем исходники :)
Buran, выложи, плз, сырцы - как раз что-то очень похожее надо сделать. Приятно будет не с нуля начать. ;)
Сегодня вечером выложу! Просто я уже начал лабать тулзу для работы через localConnection но не успеваю. Вообще тема это зашибатая :) можно даже на sourceforge чонить открыть :)
Выложил.
прошло четыре года, а у меня появился вопрос именно по этому. Мне очень нужна возможность запуска внешних пиложений из AIR, а ваш сервер выдает ошибку - не найден указанный файл. Я в C# - ноль, подскажите что не так?
Form1.cs, Line 209:
private void startAir()
{
string wd=Application.StartupPath;// путь откуда запускаем
string fn="MyAirApp.exe";// имя файла, что запускаем
string args="";// аргументы с которыми запускаем
ShellExec(wd,fn,args);// поехали
}
Отправить комментарий