2

我打算制作一个 AIR 应用程序,但我需要执行一个外部应用程序,并且由于 Adob​​e AIR 中的安全限制......我在想为什么不尝试通过编写一些类似 System("file执行”); 然后使用 Alchemy 将其更改为 swc 和我们在我的应用程序中... 任何人都尝试过这种类型,或者认为它可以工作?

4

3 回答 3

8

关于 Alchemy,您需要了解的是,它将 C 编译成与 actionscript 相同的字节码,并在与 flash/flex as3 应用程序相同的虚拟机 (AVM2) 下运行。

Alchemy 能够更快地执行某些操作的原因是编译后的 C(编译为字节码)可以通过一些在 flash 10 中添加的优化 AVM2 指令访问原始“内存”(ApplicationDomain.domainMemory)。

我想要了解的是,因为 Alchemy 只是在 AVM2 之上运行,所以它与任何其他应用程序一样受到限制。AIR 应用程序中的 Alchemy 可以比浏览器沙箱中的 Alchemy 做更多的事情,但它仍然受到该沙箱的限制。

如果您确实需要执行外部应用程序,则需要研究ShuZinc 之类的东西。

抱歉,我无法提供更多帮助。

于 2009-01-31T20:42:09.090 回答
1

这行不通 - Alchemy 并不是真的/真的不适合与外界交互的程序。我认为它不支持执行系统调用,即使 Alchemy 支持它,flash/air 运行时也肯定会阻止它。

如果您不需要跨平台行为,您可以考虑创建一个老式的“投影仪”。可以使用 fscommand 从投影仪 exe 启动程序 - 请注意,您要启动的可执行文件必须位于二进制文件旁边名为 fscommand 的文件夹中。如果这还不够,您可以尝试第三方商业工具,例如http://www.northcode.com/

于 2009-01-31T20:43:01.693 回答
0

不,Richard Szalay 是正确的:Alchemy 将 C 代码编译为 ActionScript 字节码,因此生成的 SWF 仍然受制于与任何其他相同的沙盒限制;AIR 限制可能更宽松,但使用 Alchemy 在这方面没有任何好处。

但是,您仍然可以使用套接字连接“调出”沙箱,前提是您有一个应用程序正在侦听该连接;查看Merapi——如果您愿意使用 Java,它可能可以作为一个简单的解决方案提供帮助,尽管您当然可以使用其他东西(例如 C#)来自己开发。

于 2009-02-01T03:37:29.067 回答