2012-01-07 2 views
1

Я разрабатываю дополнение к игре/плагин, который заменяет встроенную функцию онлайн-игры. Поэтому игра загружает .swf, поэтому мое решение также должно быть swf, чтобы оно работало «в игре».Выполнение внешнего .exe из локального .swf с использованием локального сервера XML Socket (C#)

Я хотел бы как, чтобы иметь возможность нажать кнопку в пользовательском .swf, который я создаю - и это откроет внешнее приложение (между прочим). То есть если бы была кнопка с надписью «Блокнот», она открыла Notepad.exe на машине.

Мое первоначальное мышление состояло в том, что у меня мог быть запуск «daemon» сервера XML Socket (C#), с которым я мог бы подключиться со вспышкой - однако, поскольку и swf, и демон локальны, флэш жаловался и выдавал эту ошибку :

"Error #2010: Local-with-filesystem SWF files are not permitted to use sockets." 

Единственный способ, который я знаю, чтобы исправить это - изменить настройки безопасности вспышки - не очень удобно!

Итак! Какие-нибудь мысли о том, как я мог иначе это сделать? Я думал, что пользовательский http-сервер может сделать трюк (связанный с URLRequest), хотя я не слишком уверен.

+1

Вы можете рассмотреть возможность упаковки пользовательского swf в качестве приложения AIR: http://www.adobe.com/products/air.html. Это дает гораздо более разрешительную среду выполнения, больше возможностей, чем те, которые вы упоминаете, чем запуск регулярного swf. –

+0

Проблема с этим - это должен быть .swf, загруженный в игру. Я никогда не использовал AIR, но я предполагаю, что это не расширение .swf. – Jonathan

+0

ОК. Если ваш пользовательский swf должен быть загружен в игру swf, тогда AIR не может быть и речи, это правильно. Я думаю, что в этом случае будет трудно запустить внешний .exe. Если .exe - это то, что вы разрабатываете, и конечный пользователь должен его установить, это можно сделать, зарегистрировав собственный протокол, который ваш .exe настроен для обработки, и который можно вызывать из ActionScript в качестве URL-адреса, например, myapp: // command/start "или такой. Но я далек от уверенности, что это может сработать, я не тестировал его (из Flash) сам. –

ответ

0

Возможно, можно использовать ExternalInterface class, который основан на NPRuntime API. Вы также можете проверить fscommand function. Официальные руководства рекомендуют эту технику для взаимодействия с кодом C/C++.

Смежные вопросы