我想用C语言编写一个C语言专用的AIR启动程序。我该如何从C程序加载AIR运行时作为进程内共享库
我看过正在运行的AIR程序与进程查看器,并能够找到正在使用的AIR运行时DLL。 AIR程序与Java不同,因为它们作为平台特定的可执行文件进行安装,这些可执行文件在AIR运行时启动后(它们的图标由用户双击)作为进程内共享库绑定到AIR运行时。
那么,我想做一个AIR发射器,而不是java.exe。
java.exe作为一个平台操作系统进程启动,该进程绑定到Java JVM运行时(JRE)作为进程内共享库。要执行的java应用程序被指定为java.exe的命令行参数。一旦运行java.exe并且JVM功能完全正常,则指定的Java应用程序类将由JVM类加载器加载以供执行。然后,指定的Java应用程序就会接管,从某种意义上说是“劫持”java.exe进程。当然,指定的Java应用程序在任何进程列表中都显示为承载它的java.exe程序。
我想让AIR应用程序启动像这样工作。为什么?所以我可以探索攻击AIR的方法,也许可以克服其中许多缺陷。例如,对于初学者,我想通过一些可用于运行中的AIR应用程序的新API扩展AIR运行时体验。
我的第一道命令将是:
- 实施 的ActionScript3到C绑定接口,足以媲美 到.NET的PInvoke
- 加入一个API,用于发射过程是 媲美在Java SE中发现的API(Runtime.exec, ProcessBuilder,Process)
- 将对AIR应用程序的支持添加到 能够与stdin , stdout,stderr。奇怪的是,尽管 Adobe在AIR中增加了对本地文件 访问的支持,但他们省略了 与这些标准文件 管道的交互(但它们可在AIR支持的任何 OS平台上找到)。经由 交换AMF对象,以便空气(或Java或任何 AMF能够语言)的应用程序可以 进程间通信 -
- 实现支持AMF的标准输入, 标准输出,标准错误。这将向微软的PowerShell 添加 。
目前Merapi提供了一个带有Java的AMF桥接器,因此可以证明这一点的功效。唉,Merapi必须使用本地主机端口和套接字进行进程间通信 - 相对于使用stdin/stdout/stderr进程间管道来说,这是一种笨拙的方式。
我目前有一位Java开发人员正在编写一个Java引导程序,该程序将AIR应用程序作为子进程启动,然后使用Merapi通过回送套接字与AIR应用程序进行异步消息通信。 C程序仍然会使用类似Merapi的方法与AIR应用程序交谈。 – RogerV 2009-02-07 16:46:14