`
wangleifire
  • 浏览: 510848 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用aperture框架让AS3与C++通信,执行本地代码

    博客分类:
  • FLEX
阅读更多

我们都知道,AIR的效果是非常出色的,这也是大家喜欢她的原因,可是她的本地代码控制能力却是非常的弱,我们所做的好多试图将AIR本地化的努力最终不得不以失败而告终,其惨痛无以言表。

  现在,aperture框架来了,我们不再痛苦了,我们用AS3与 C++完美结合,做出功能与效果兼具的软件成为可能。

  本篇文章利用aperture框架让AS3使用windows的动态链接库(dll)文件。

  aperture框架下载地址:http://aperture.fluorinefx.com/

  好了,让我们开始吧。

  1.安装aperture框架(我的是安装在D:\Program Files\FluorineFx Aperture)。

  2.创建dll文件。

    A)打开vs2008,创建一个ATL项目,如下图所示:

项目名称为:Test,单击“确定”创建项目。

    B)在应用程序设置 面板中选择“动态链接库”和“允许合并代理/存根(stub)代码”,如下图所示:

单击 完成 创建此项目。

    C)在“解决方案资源管理器”中右击“Test”选择菜单如:“添加”->“类”,打开添加类面板,选择“ATL简单对象”,如下图所示:

    D)单击“添加”按钮打开向导面板,输入类名称为“MyTest”,如下图所示:

单击“完成”就创建了一个类。

    E)在类视图中右击“IMyTest”接口,选择“添加”->“添加方法”,打开添加方法面板,方法名为Runcmd,分别添加传入传出参数如下图所示:

单击“完成”添加一个方法。

    F)打开“MyTest.cpp”,在相应的方法中添加实现代码,如下:

// MyTest.cpp : CMyTest 的实现

#include "stdafx.h"
#include "MyTest.h"
#include <comdef.h>


// CMyTest


STDMETHODIMP CMyTest::Runcmd(BSTR cmd, BSTR* result)
{
_bstr_t bs=cmd;
char* ch=bs;
system(ch);
*result=_bstr_t("已经成功执行了cmd");
return S_OK;
}
G)右击“MyTest”工程,选择生成,则会生成一个Test.dll文件,打开MyTest.rgs文件,如下所示:

HKCR
{
Test.MyTest.1 = s 'MyTest Class'
{
CLSID = s '{1980D42B-26C0-48C0-9DCB-76EA41DBFF5A}'
}
Test.MyTest = s 'MyTest Class'
{
CLSID = s '{1980D42B-26C0-48C0-9DCB-76EA41DBFF5A}'
CurVer = s 'Test.MyTest.1'
}
NoRemove CLSID
{
ForceRemove {1980D42B-26C0-48C0-9DCB-76EA41DBFF5A} = s 'MyTest Class'
{
ProgID = s 'Test.MyTest.1'
VersionIndependentProgID = s 'Test.MyTest'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{2E593994-C270-4D5D-9023-7943B0C37F99}'
}
}
}
记录下MyTest的Class id 1980D42B-26C0-48C0-9DCB-76EA41DBFF5A

  3.打开FlashCS4,创建一个AIR工程,为此工程创建文档类Main.as,在此类中输入以下代码:

package
{
import cn.asmax.aperture.LocalObject;
import cn.asmax.aperture.LocalObjectEvent;
import flash.display.Sprite;

/**
* ...
* @author Jaja as-max.cn
*/
public class Main extends Sprite
{
private var lc:LocalObject = LocalObject.localObject;

public function Main():void
{
lc.source = "Test:1980D42B-26C0-48C0-9DCB-76EA41DBFF5A";
lc.addEventListener(LocalObjectEvent.RESULT, onResult);
lc.Runcmd("notepad");
}

private function onResult(event:LocalObjectEvent):void {
switch(event.methodName) {
case "Runcmd":
trace(event.result);
break;
}
}

}

}

  说明:类中所使用的LocalObject类和相应的事件类是本人根据aperture框架封装的纯AS3类,此类可以在flash、flex和纯as3工程中使用,比aperture自带的类使用更方便。这两个类可在示例代码中找到。

  编译AIR程序。

  4.将aperture安装目录中Debug目录下的msi.dll、fluorinepp.dll、Console.exe复制到AIR工程 目录中,再将我们的Test.dll也复制到此目录中,双击Console.exe运行调试程序,再执行我们的AIR程序,就可以看到效果了。

  5.然后在打包程序时将msi.dll、fluorinepp.dll、Test.dll一起打包进去。

分享到:
评论
3 楼 michao 2019-07-15  
大哥,还有aperture.exe吗? 发我一份,找不到呀,micao66@126.com谢谢
2 楼 wangleifire 2012-02-02  
这个例子又不大,自己实现一下吧
1 楼 ljfdestiny 2012-01-10  
您好博主,首先谢谢您的分享,还有请教一下示例下载在哪里能下?在csdn以及百度空间那里都下不了...如果可以能不能发一下到小弟的邮箱,191744156@qq.com谢谢

相关推荐

    探索 Aperture 3

    用户可以通过将Aperture 3 Sample Library文件和Wyoming文件夹拖入硬盘上的“图片”文件夹来使用这些样本资料库。对于从Mac App Store购买Aperture的用户,可以按照使用手册中的指导来处理自己的图像。 Aperture的...

    Canny边缘检测c++代码

    在提供的压缩包中,`可执行文件`可能是编译后的Canny边缘检测程序,可以直接运行在支持的平台上查看效果。而`源代码`文件则包含了实现Canny算法的具体代码,你可以通过阅读代码了解其实现细节,这对于学习和理解...

    合成孔径雷达SAR图像处理的C++代码 包括从RAW格式起 全套处理代码.zip

    合成孔径雷达(Synthetic Aperture Radar,简称SAR)是一种遥感技术,它利用雷达信号与目标相互作用,生成高分辨率的地面图像。在SAR图像处理中,C++是一种常用的编程语言,因为它提供了高效的内存管理和计算能力,...

    Aperture3 使用教程

    Apple 专业级图像处理软件,支持各种Raw格式的处理。加上文件管理,功能就显得大而全。

    Aperture 3.5 使用手册

    ### Aperture 3.5 使用手册关键知识点解析 #### 一、Aperture 3.5 简介 Aperture 3.5 是由 Apple Inc. 开发的专业级照片管理和编辑软件,它提供了强大的图像处理功能,适用于摄影师、设计师和其他创意专业人士。这...

    关于AIR调用C++的DLL

    3. 调试和测试AIR应用程序:通过启动debuggingConsole和测试应用程序来验证配置是否正确,并且AIR应用程序是否能够与FluorineFx框架通信。 ***R项目中需要复制的文件:项目中必须包含特定的AS文件和DLL文件(如...

    C++OpenCV3源代码Harris角点检测

    ### C++ OpenCV3 源代码 Harris 角点检测 #### 一、Harris角点检测概述 在计算机视觉领域,特征检测是一项基础而重要的技术。它可以帮助我们从图像中提取出有意义的信息,比如边缘、角点等,进而进行更复杂的图像...

    nverse Synthetic Aperture Radar Imaging With MATLAB Algorithms源代码

    这本书提供了充分的代表性逆合成孔径雷达(ISAR)成像。本书涵盖了所有可能的ISAR成像方面。...如高分辨率SAR的重要概念,脉冲压缩和图像形成连同相关的MATLAB代码。 很全面,本代码很适合学习研究。

    Synthetic Aperture Radar Processing

    Synthetic Aperture Radar Processing" simply and methodically presents principles and techniques of Synthetic Aperture Radar (SAR) image generation by analyzing its system transfer function. The text ...

    大华平台SDK开发手册(C++版)_大华sdkc++_大华sdkC_大华摄像机平台SDK_语音对讲大华_云台控制_

    《大华平台SDK开发手册(C++版)》是针对大华摄像机平台的软件开发工具包,主要提供了C++语言的接口,便于开发者进行二次开发,实现与大华摄像机的深度集成。这个SDK涵盖了多个关键功能,如语音对讲、云台控制等,为...

    SAR的CS算法C++程序源代码

    **SAR的CS算法C++程序源代码** 合成孔径雷达(Synthetic Aperture Radar, SAR)是一种利用雷达原理获取高分辨率地表图像的技术。在SAR系统中,通过移动平台上的雷达发射天线来合成一个大的等效孔径,从而实现对目标...

    swift-aperture-node从Node.js记录macOS上的屏幕

    在Node.js端,项目可能使用了`child_process`模块来调用Swift编译的可执行文件,实现跨语言通信。`child_process`允许Node.js进程启动子进程,并与之交互,这使得Node.js可以调用任何可执行文件,包括用Swift编写的...

    SAR雷达CS算法C++程序

    **SAR雷达与CS算法简介** SAR,全称为Synthetic Aperture Radar(合成孔径雷达),是一种利用雷达原理进行远程遥感成像的技术。它通过在飞行过程中发射和接收雷达信号,然后利用数据处理技术将这些信号合成,形成高...

    adobe AIR 的本地框架

    adobe AIR的本地框架FluorineFx Aperture 通过它AIR应用程序能够直接调用使用C,C++,C#等编写的类库。

    A C++ library to parse Gerber files Gerber文件解析c++

    3. ** aperture宏**:Aperture宏定义了绘图时使用的形状,如圆形、矩形、孔或其他自定义形状。它们用D代码定义,并在绘图指令中引用。 4. **光圈调用**:在Gerber文件中,每个绘图操作都会指定一个光圈来决定绘制的...

    ISARLAB-Inverse Synthetic Aperture Radar Simulation and Processing Tool

    ### ISARLAB:逆合成孔径...通过使用ISARLAB,研究人员可以更好地理解雷达信号与目标之间的关系,进一步推动了雷达成像技术的发展。此外,该软件对于教育培训也有着不可忽视的价值,是雷达领域不可或缺的重要资源之一。

    VC++关于SAR图像处理的经典案例代码

    通过MATLAB和VC++的交互,可以实现快速原型设计和优化的代码执行。 在学习这些案例时,建议读者先理解SAR图像的基本原理,然后逐步剖析代码,了解每个函数的作用和整个处理流程。同时,结合理论知识和实际代码,...

    Aperture 3的英文说明书

    ### Aperture 3 英文说明书解读:摄影大师的专业工具 #### 核心知识点解析: ...无论是专业摄影师还是摄影爱好者,Aperture 3 都能提供一个理想的平台,让创意得以自由发挥,使每一张照片都能展现出最佳状态。

Global site tag (gtag.js) - Google Analytics