是否可以使用任何IPC机制从Adobe Flash actionscript调用c ++ api?有什么好例子吗?
更新:我现在主要想要桌面应用程序,即Adobe的/或任何其他人的桌面运行时
浏览器播放器无法实现。在AIR应用程序中,您可以使用Socket API来执行IPC。
如果您定位Adobe AIR运行时,则可以利用AIR 2.0中引入的NativeProcess API。此API允许您生成外部进程并通过stdin和stdout与它们进行通信。
如果您喜欢冒险并希望做一些无证件且完全不受支持的事情,您可以通过与Flash Player的内存映射文件交互来使用LocalConnection内部。关于osflash.org/localconnection网站的更多细节。此方法有一些限制,不受支持。我不推荐它。
如其他一些答案中所述,您还可以使用套接字连接来发送/接收数据。
不是来自Flash播放器,因为它很可能违反其安全模型。你可以从Tamarin VM调用C ++,例如mod-actionscript正在做的。一个选项是将您的调用传递给AS3服务器,在那里调用一些C ++函数并发回结果。另一种选择是使用alchemy将C ++代码交叉编译为AVM2。但是如果你想调用C ++来访问客户端机器上的功能(Flash文件系统访问,UDP或其他等),那么就没办法了。
编辑: 好的,我想有以下几种选择:
flash.accessibility
包,只用AS3解决它LocalConnection
。从AS3的角度来看,这看起来好一点,但需要对C ++方面进行一些小的攻击,因为你需要掌握连接并实现协议(指针here)这实际上取决于您所引用的“API调用”。如果他们提到IPC机制,通常答案是否定的。您可以编译代码,但是您没有实现来支持这些调用。如果您正在使用套接字,则可以在Flash中实现对该套接字的支持,尽管Alchemy目前不支持socket()API。这有帮助吗?
前段时间我读到了flash中的ActiveX支持。也许您可以围绕C ++ Api编写一个ActiveX包装器并以这种方式调用它。使用Air 2.0,您还有另一种可能性 - 您可以调用外部程序。如果你在api周围写一个命令行包装器,你就可以这样调用它。