如何运用Adobe AIR与本地程序通讯?

在OATOS开发中,有些模块用Adobe AIR实现,但有些功能仅仅依靠AIR还不能实现,比如:激活和前置浏览器,系统截屏,开启系统服务等等。这个时候我们需要调用本地程序来帮忙实现这些功能,那么必然就会涉及Adobe AIR与本地程序通讯问题:AIR怎么通知本地程序开始工作,要做什么事?做完后,本地程序怎么告诉AIR,并把AIR需要的数据发送过去。以下列举几种我们在OATOS开发过程中使用的方法供大家参考。

Adobe AIR开发应用

方法一:ExternalInterface

记得很早前接触的C与FLASH 之间的通讯就是通过它(注:它的很多例子都是与JS通讯),具体就不细说了,网上资料很多。

方法二:XMLSocket

利用socket机制与本地程序通讯,由于它们之间通过字符串来传递消息,需要自己定义一套消息格式来收发。另外AS底层机制是以零字节来判断是否消息接收完毕,所以本地程序端发送消息要以零字节来结尾。

方法三:NativeProcess

在AIR2时代,Adobe推出了这个:用外部进程的标准流实现交互。基本原理是:AIR另外启动一个本地进程,来执行任务,在此期间AIR进程监听本地进程的标准输入和输出 流以及进程的标准错误流。

这个具体实现网上也有例子。(注:在实际应用过程中,当启动另外一个进程,很容易被杀毒软件当作木马。)

方法四:ANE(AIR Native extensions )

AIR3来了,本地扩展是很让人振奋的一个突破。最初这是为 TV 设备设计的,后来过渡在手机上,PC上。如今已经很强悍了,网上讨论的比较多的是和移动设备通讯(android,ios)。现在来说说在Windows上的如何应用。

1.需要C,C++编译环境

我是在flash builder4.6上直接装了CDT插件,然后装了MinGW环境( 当然也可以装cygwin,具体的可以参考网上资料),配置环境变量

2.链接Flash Runtime到C或者C++工程

新建一个C/C++工程 选择Shared Library

导入FlashRuntimeExtensions.h 路径是Adobe Flash Builder 4.6\sdks\4.6.0\include\FlashRuntimeExtensions.h。

具体:导入–General–文件系统然后浏览此路径

在flash builder sdks里面找到FlashRuntimeExtensions.lib  路径是Adobe Flash Builder 4.6\sdks\4.6.0\lib\win\FlashRuntimeExtensions.lib

然后在c/c++ build– settings –mingw c linker–miscellaneous里 添加这个路径

3.编程

这里要注意的是,编写的源程序编码格式为ANSI,否则会显示中文乱码

4.生成ANE

这个过程与其它平台的差不多,这里就不细说了。(注:平台是Windows-x86)

5.创建AIR程序

Flex 构建路径–本机扩展    选择生成的ANE

Flex构建打包–本机扩展   右边的勾打上

现在可以运行和测试你的程序了

方法五.Alchemy

可以把C/C++代码转化成AVM2可以执行的字节码,这是个很有意思的功能,08年就出来了,目前还在不断完善中。目前大多数应用都是拿来做项目优化的,提高效率用的。

我觉得可以用来实现调用本地的一些功能,当然这肯定会有很多限制,这是出于安全方面的考虑。具体可以调用哪些,以后可以进行尝试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值