.NET编程中使用旧有的COM组件

编程

本文以使用W3 JMail为例

1. 生成包含Metadata(元数据)的DLL

在jmail的安装目录,键入以下命令,将生成jmail_dotnet.dll

TlbImp jmail.dll /out:jmail_dotnet.dll

事实上,因为实际的JMail组件为一"unmanaged"(不受控) COM组件,因此需要一个Proxy在ASP+应用程序和COM组件之间搭桥。

2. 放置 Metadata DLL

对于ASP+页面,有两种途径:
1)置于该页面所在目录的bin子目录;
2)置于该页面所在的目录。
对于第二种方法,在每一个需要使用JMail的ASP+页面,我们都需要使用一个@Assembly语句,因此推荐使用第一种方法,将jmail_dotnet.dll拷入该页面所在目录的bin子目录。

对于普通的C#程序,将它和源码放在一起就行了。

3. 取得组件的有关详细信息

我们需要知道
1) Namespace (用于@Import语句或using语句)
2) 准确的类名
3) 方法和属性的数据类型
4) 方法和属性精准的拼写(C#严格区分大小写)

这些信息可以用NGWS SDK自带的工具IL (Intermediate Language) Disassembler 解析刚刚的Metadata DLL得到。详细的信息就不多说了,好好看看吧。

4. 使用

两个最简单的例子

——————————————————————————————
C#程序

//C#:sendmail.cs,使用csc /r:jmail_dotnet.dll sendmail.cs编译

using System;
using jmail;

public class jmailversion {
  public static void Main() {
    SMTPMail email = new SMTPMail();
    String strVersion = email.Version;
    System.Console.WriteLine(strVersion);
  }
}

——————————————————————————————
ASP+页面:

<% @Page Language="C#" %>
<% @Import Namespace="jmail" %>
<%
SMTPMail email = new SMTPMail();
String strVersion = email.Version;
Response.Write(strVersion);
%>

——————————————————————————————
SunADM@2K1007
http://www.aspgreat.com
http://www.dotnetcn.com

时间: 2024-09-01 13:38:04

.NET编程中使用旧有的COM组件的相关文章

Android编程中的四大基本组件与生命周期详解_Android

本文实例讲述了Android编程中的四大基本组件与生命周期.分享给大家供大家参考,具体如下: Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应. Activity之间通过Intent进行通信.在Intent 的描述结构中,有两个最

深入理解C#编程中的组件-事件-委托

编程 在组件编程中对事件的理解是十分重要的,C# 中的"事件"是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法.与事件联系最为紧密的,个人认为是委托.委托可以将方法引用封装在委托对象内.为了弄清组件-事件-委托三者的关系,本人用实际的例子来谈 谈小弟的理解. 首先创建一个Windows控件项目,添加如下控件样板. 当事件触发时,会传递一个EventArgs类型的参数给事件处理方法,为了能传递自定义的信息,我们可以创建一个继承于EventArgs的事件参数 类,其定义如下:

Java数据库编程中查询结果的表格式输出

编程|数据|数据库 [内容摘要]本文较为详细地介绍了在Java数据库编程中,利用表格输出查询结果的方法:并对所涉及的类给以了简要说明.[关键字]类.对象.接口[作者简介]男,26岁,陕西财经学院研究生,师从陈逢吉教授,从事金融信息系统方面的研究. 利用Java开发数据库应用系统时,经常需要在用户界面上显示查询结果.由于SUN公司提供的JDK1.x开发工具包不是可视化的集成开发环境(IDE),不能象Delphi.VB那样方便地把查询结果在DBGrid等表格中显示出来.因此,只能靠自己编写代码来实现

ASP编程中15个非常有用的例子 (二)

ASP编程中15个非常有用的例子 enet学院 8.强迫输入密码对话框 答把这句话放载页面的开头 <% response.status="401 not Authorized" response.end %> 9 如何传递变量从一页到另一页 答 用HIDDEN类型来传递变量 <% form method="post" action="mynextpage.asp"> <% for each item in reque

多线程在Visual C#网络编程中的应用

visual|编程|多线程|网络 网络应用程序的一般都会或多或少的使用到线程,甚至可以说,一个功能稍微强大的网络应用程序总会在其中开出或多或少的线程,如果应用程序中开出的线程数目大于二个,那么就可以把这个程序称之为多线程应用程序.那么为什么在网络应用程序总会和线程交缠在一起呢?这是因为网络应用程序在执行的时候,会遇到很多意想不到的问题,其中最常见的是网络阻塞和网络等待等. 程序在处理这些问题的时候往往需要花费很多的时间,如果不使用线程则程序在执行时的就会表现出如运行速度慢,执行时间长,容易出现错

ASP编程中15个非常有用的例子 (二)(转)

编程 ASP编程中15个非常有用的例子 enet学院 8.强迫输入密码对话框 答把这句话放载页面的开头 <% response.status="401 not Authorized" response.end %> 9 如何传递变量从一页到另一页 答 用HIDDEN类型来传递变量 <% form method="post" action="mynextpage.asp"> <% for each item in re

理解COM编程中的“种类”(Category)概念

问题: 我要编写一个支持ActiveX文档插件(Plug-ins)的应用程序.为了创建一个已安装插件的菜单,在程序启动时我扫描注册表查找已安装的ActiveX组件.对于每一个ActiveX组件创建一个实例并查询一个叫IMyAppPlugin的专门接口.如果这个接口存在,那么我就认为这个组件就是我的程序所要的插件.这样做好像行不通,尤其是安装有多个ActiveX组件时做起来就更困难.有没有更好的办法处理这种问题? 解答: 对于这种情况,Windows确实有更好的办法来解决:既种类(category

浅析Lua编程中的异常处理

  这篇文章主要介绍了浅析Lua编程中的异常处理,是Lua入门学习中的基础知识,要的朋友可以参考下 需要进行错误处理 错误处理是必要的,因为真实世界中的操作通常需要使用复杂的操作,包括文件操作,数据库事务和web服务调用.没人关心错误的业务,涉及保密信息或金钱交易时造成大的损失. 在任何编程,总是有错误处理的要求.错误可以是两种类型,其中包括, 语法错误 运行时错误 语法错误 因使用不当造成的各种程序组件,如运算符和表达式中出现语法错误.一个简单的例子中的语法错误如下所示. 代码如下: a ==

Android编程中软键盘基本用法分析_Android

本文实例讲述了Android编程中软键盘基本用法.分享给大家供大家参考,具体如下: 调用下面代码:(第一次调用显示,再次调用则隐藏,如此反复),this指activity InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); imm.sh