我打算创建一个AIR应用程序,但我需要执行一个外部应用程序,并且由于Adobe AIR中的安全限制......我在想为什么不尝试通过编写一些像System这样的C代码来绕过它(“要执行的文件”);然后使用Alchemy将它变成一个swc和我们在我的应用程序中......任何人都试过这种,或认为它可以工作?
答案 0 :(得分:8)
你需要了解的Alchemy是它将C编译成与actionscript相同的字节码,并且它在与flash / flex as3应用程序相同的虚拟机(AVM2)下运行。
Alchemy能够更快地进行某些操作的原因是,编译后的C(编译为字节码)可以通过闪存10中添加的一些优化的AVM2指令访问原始“内存”(ApplicationDomain.domainMemory)。 / p>
我想要的是,因为Alchemy只是在AVM2之上运行,所以它的限制与任何其他应用程序相同。 AIR应用程序中的Alchemy可以在浏览器沙箱中执行Alchemy,但它仍然受到该沙箱的限制。
如果您确实需要执行外部应用程序,则需要查看Shu或Zinc之类的内容。
抱歉,我无法再提供帮助了。
答案 1 :(得分:1)
这不起作用 - 炼金术并不真正/非常适合与外界互动的程序。我不认为它会支持进行系统调用,即使Alchemy支持它,flash / air运行时肯定会阻止它。
如果您不需要跨平台行为,您可以考虑创建一个老式的“投影仪”。可以使用fscommand从投影机exe启动程序 - 只需要知道您要启动的可执行文件必须位于二进制文件旁边名为fscommand的文件夹中。如果这还不够,您可以尝试第三方商业工具,例如http://www.northcode.com/。
答案 2 :(得分:0)
不,Richard Szalay是正确的:Alchemy将C代码编译成ActionScript字节码,因此生成的SWF仍然受到与其他任何一个相同的沙箱限制; AIR限制可能更宽松,但使用Alchemy在这方面没有任何好处。
但是,如果您有应用程序正在侦听连接,您仍然可以使用套接字连接“调出”沙箱。查看Merapi - 它可以作为一个简单的解决方案提供帮助,如果您愿意使用Java,尽管您可以使用其他东西,例如C#。
。