在ASP.NET中使用非托管COM组件

axAgent.dll(AxInterop.AgentObjects.dll)下载 axAgent.dll(AxInterop.AgentObjects.dll) ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。 立即下载
  众所周知,ASP.net是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢?
  
  
    为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息 。必须有一种工具能够产生元数据。能够从某个地方获得元数据。这个元数据的发源地就是类型库,事实上,今天所有的组件都有一个类型库。
  
  
    这里为了说明如何产生元数据信息,我们不妨以Microsoft Agent组件为例进行说明。这个组件类似于Office的小助手,它能够完成各种丰富多彩的人性化的动作,并且支持语音识别和语音合成。一般的操作系统都默认安装了这个组件,用户该不会发愁没有这个组件吧。如果你的系统删除了这个组件,你可以到http://microsoft.com/msagent/downloads.htm.去下载。
  
  
    1、首先是创建元数据
  
  
    Microsoft Agent控件默认是安装在%systemroot%/msagent/目录下,我们可以首先从开始菜单中Visual Studio.NET Command Prompt菜单项定位到这个目录。在这个目录执行下面的命令。
  
  
    tlbimp agentctl.dll /out: agentctl_proxy.dll
    通过这个命令我们可以创建一个包含元数据信息的代理文件agentctl_proxy.dll。注意这并不是一个真正的动态连接库文件,而是一个装配文件(Assembly),也就是我们非托管COM组件的代理。
  
  
    也可以通过.NET框架提供的实用程序aximp.exe创建,命令行如下,这样它会生成两个文件,如下图所示:注意AgentObjects.dll 和agentctl_proxy.dll文件是完全一样的文件。
  
  
    aximp %systemroot%/msagent/agentctl.dll
  
  
  <p align=center><htmChina:Image id=Image1|1></htmChina></p>
    2、安装到ASP.NET中
  
  
    把元数据文件安装到ASP.NET 环境中有两种办法:
  
  
    一是把文件复制到应用程序的BIN目录。
  
  
    二是把它复制到ASP.NET目录。
  
  
    第二种方法有一个缺陷,你必须在每一个使用组件的ASP.NET页面插入一个@Assembly语句。而保存到Bin目录则可以避免这一点。assembly将会被加载到应用程序的所有ASP.NET页面。因此我们最好还是把它放在bin目录。

    3、IL反汇编(Disassembler)
  
  
    现在基本上到了令大多数VB或VBScript程序员头疼的时候了,我们要利用一个反汇编器产生一些重要信息。
  
  
    Assembly 的名称空间(使用 @Import 语句)
  
  
    精确的类名(这可能与ASP有着很大的不同!)
  
  
    方法和属性的数据类型
  
  
    方法和属性的精确拼写。注意在 C# 中 Bodytext 和 BodyText是两个完全不同的变量。
  
  
    产生上述信息需要使用IL (Intermediate Language) Disassembler中间语言反汇编器,你可以在生成元数据后,并把它们移动到适当目录后直接键入ildasm.exe激活这个命令。然后可以利用File | Open,选择相应的文件,显示的结果如下图所示,显示的结果非常类似于OLE/COM查看器获得结果。
  [htmChina:ImageAlign align=center][htmChina:Image id=Image1|2][/htmChina:Image][/htmChina:ImageAlign][htmChina:ImageAlign align=center][htmChina:Image id=Image1|3][/htmChina:Image][/htmChina:ImageAlign]
    注意生成的汇编文件不一样,名称空间的名称也不一样,在ASP.NET页面往往需要使用 @Import 导入名称空间,不过它们的类、属性、方法都是一样的。对于ASP.net程序员来说,整个蓝色的符号都是很重要的,因为它们表示的是一个类或者是一个接口。如果我们对这些类或者接口进行展开,我们会获得一系列属性和方法的列表。
  
  
    我们看到的所有方法都有一个精确的数据类型描述。首先是方法名称,冒号后面是返回值类型圆括号中是方法需要的参数。
  
  
    当我们谈及用get_ 和set_方法描述属性的时候,VBScript程序员可能会一头雾水,我们知道每一个属性实际上是对应于类中的一个私有成员,属性的读写分别是通过这两个函数实现的。
  [htmChina:ImageAlign align=center][htmChina:Image id=Image1|4][/htmChina:Image][/htmChina:ImageAlign]
  
  
    每一个属性旁边都有一个红色的标记,双击这个属性,我们可以获得属性的定义,我们可以看到属性可以为Get, Set 或者 Get/Set。
  
  
    4、组件的使用
  
  
    当我们对元数据了解清楚以后,剩下的工作就是如何在ASP.NET 中使用这个组件,下面是一段使用MsAgent的代码:
  
  
  <% @Page Language="C#" %>
  <% @Import Namespace="AgentObjects" %>
  <%
  AxAgentObjects.AxAgent AxAgent=new AxAgentObjects.AxAgent();
  IAgentCtlCharacterEx Character;
  AxAgent.Characters.Load("Genie",(object)"GENIE.ACS");
  Character = AxAgent.Characters["Genie"];
  Character.LanguageID = 0x409;
  // Display the character.
  Character.Show(null);
  Character.Speak(“Hello World”, null);
  Response.Write(Character.Name);
  Character.Play("Wave");
  Character.Play("Hide");
  %>
  
  
    当导入类型库以后,接着我们要创建这个类的实例,剩下的使用方法基本上和ASP应用组件差不多。
  
  
    所有的COM组件调用的方法基本上相同,正如在托管应用程序(C#、Visual Basic.NET)加入一个COM组件引用,接着系统要为这些非托管代码生成一个封装,实际上也是执行上面的步骤,即导入类型库。实际上这种方法可以用于所有的托管应用程序中,包括托管的C++代码、C#、Visual Basic.NET环境,.NET 框架的这种互操作性保护了组件开发者的既有投资,而且为我们的托管程序设计提供了一条思路。即我们可以把许多使用托管代码难以实现或者实现起来非常麻烦的功能(比如通过API函数调用读写软盘硬盘物理扇区)封装到一个非托管的COM组件中,通过组件调用间接实现.

 

ASP.NET使用COM组件处理EXCEL表格.pdf ASP.NET使用COM组件处理EXCEL表格 绝对的好东西,大家速度下载哈 立即下载

相关推荐

asp.net 错误:0x8007000B 异常的解决方法

在Asp.net里调用非托管的.dll文件时,出现“An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)”这样的错误提示。     在c# winform的程序里大概知道该错误:0x8007000B是由于本机操作系统是64位,调用的DLL是32位而产生的错误,所以只需将网站的连接池的设置改成支持32位程序运行就可以解决问题了。     1、打开IIS管理器,选择左边的“应用程序链接池”,找到该调试网站的连接池名称,然后右键点击“高级设置”。  

ASP.NET调用COM

在VC++z中利用ATL COM AppWizard写一个COM组件。   在VS.NET中利用“型别库导入工具”(TlbImp.exe),从COM组件的型别库生成一个装配件,这样受控代码就能通过访问这个装配件对象来访问COM组件对象。 用ildasm.exe(VS.NET自带工具)察看生成的装配件。如图所示: 装配件中,我们主要关注这几个接口函数: System.String GetFile (

tohigh的专栏 8017

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

走近VB.Net(十一) 随心所欲窗体外观(skin精彩源码)

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 1328

跨境电商ERP开发之Shopee开发者账号申请

引言:由于电子信息技术和经济全球化的进一步发展,电子商务在国际贸易中的影响力和关键作用日渐突显,已变成中国出口贸易的市场趋势。跨境电商未来的发展前景必定是有助于减少经济成本、推动全球贸易便利化,有助于提高国内群众福祉,有助于打造良好的营商环境,从而推动经济长期健康发展。 gitee仓库地址: https://gitee.com/naturalwish/SSERP/tree/master 以下授权教学同ShopeeOpen Platform - Developer Guide 申请流程 ..

naturalwish的专栏 3637

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

Nginx实战:SpringBoot+Vue双机高可用部署与配置优化全解析

本文详细解析了Nginx+SpringBoot+Vue双机高可用部署方案,涵盖环境准备、Nginx安装、核心配置优化及上线避坑指南。通过前后端分离部署与Nginx负载均衡,实现零停机更新与故障自动隔离,显著提升系统可用性与性能。特别适合电商等高并发场景的实战应用。

weixin_33704591的博客 567

深入IR2104数据手册:被忽略的SD引脚用法和死区时间调节实战

本文深入解析IR2104半桥驱动芯片的SD引脚用法和死区时间调节技巧,帮助硬件工程师优化电机控制和电源转换系统。通过详细的电路设计、实测数据和调试方法,揭示SD引脚的多重保护机制和死区时间的精密调节策略,提升系统安全性和效率。

weixin_30342363的博客 390

ASP.NET应用技巧:非托管COM组件的使用

众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码

kafeiwuzhuren的专栏 568

告别手动处理:用 Bruker NSMatlabUtilities 工具箱批量分析 AFM 力曲线数据的实战案例

本文介绍了如何使用 Bruker NSMatlabUtilities 工具箱实现 AFM 力曲线数据的批量分析,解决传统手动处理耗时且易出错的问题。通过实战案例展示工具箱的核心功能,包括数据读取、力曲线分析和可视化,帮助科研人员提升数据处理效率和准确性。

weixin_28362173的博客 213

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

【转】在ASP.NET中使用非托管COM组件

众所周知,ASP.NET是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢?   为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息 。必须有一...

weixin_30762087的博客 119

使用 MATLAB/Simulink 搭建一个 无人机群间数据交换与协同控制仿真系统

本文提供了一份详细的Simulink无人机群协同控制仿真教程。主要内容包括:无人机群系统架构设计(去中心化网络、通信分层)、三维运动建模、空-空通信链路实现(距离判断、无线信道)、分布式Consensus控制算法开发,以及性能评估指标设定。教程采用模块化设计思路,通过ModelReference构建多无人机并行模型,并给出了MATLAB函数实现关键算法。最后展示了预期仿真结果(收敛时间<15s、位置偏差<2m)和进阶应用方向(编队飞行、AI协同等),帮助读者掌握群体智能系统的建模与仿真方法。

amy_mhd的博客 155

NET中使用非托管COM组件

在ASP.NET中使用非托管COM组件         众所周知,ASP.net是基于通用语言运行库创建的,也就是所谓的托管执行环境。生成的代码称为托管代码。编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息。而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢?     为了在托管环境中使用非

睫晋姬的专栏 410

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 323

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

vs2005,.net的C#语言开发生成com组件的tlb文件

将.net托管dll导出为com,以便于非托管的程序调用CCW(COM Callable wrapper) 是vs2005提供的一个机制,它可以把 .Net 托管DLL导出成传统COM,便于VB6, ASP 调用, 下面是一个普通例子:1&gt; 在vs2005中建立一个普通C# 的 class library 工程, 并在写入代码////假定空间名为csLib2,类名为Class1 //蓝色部分...

weixin_34075551的博客 583

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

在.NET中使用COM组件

在.NET中使用COM组件 文章目录在.NET中使用COM组件早期绑定COM对象为COM类型库生成互操作程序集使用COM组件后期绑定COM对象通过与非托管代码互操作创建COM对象通过平台调用创建COM对象通过C++ Interop包装COM对象封送处理错误处理提升性能 早期绑定COM对象 为COM类型库生成互操作程序集 使用.NET Framework SDK中提供的COM Interop工具 (类型库导入程序TlbImp.exe)TlbImp 可以将COM类库的dll或tlb 转换为.NET程序

小数点儿的博客 1646

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

com ,clr,asp,.net,mfc,atl

..

四夕日 月 950
上一篇: 使用 .NET 和后台智能传输服务 API 来编写自动更新应用程序
下一篇: 成功激励格言精选
forlinux
博客等级 码龄21年 53粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值