`

.net Com组件注册

阅读更多

本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!”

环境与工具:

◆.net framework 3.5 C#

◆java jdk1.5, Tomcat 5.5

◆jacob-1.15-M3

实现例子:

一、C# 制作Com组件

新建一个Class 项目,取名TestCom

using System;  using System.Collections.Generic;  
using System.Linq;  using System.Text;  
using System.Runtime.InteropServices;   
namespace TestCom{     
 [Guid("E9BCF867-CD81-40d0-9591-ED28D1ED2B53")]      
 public interface IEncrypt{          
  [DispId(1)]           
  string GetEncrypt(string str,string str2);      
 }      
 [Guid("33A6E58D-E1F5-4b53-B2E2-03B9F8BA2FAD"), 
 ClassInterface(ClassInterfaceType.None)]      
 public class Encrypt:IEncrypt{          
  public Encrypt(){}           
  public string GetEncrypt(string str,string str2){                            
   return  "Test:ï | "+str+"|"+str2;          
  }      
 }  
}

 

    打开 Project-->  Properties菜单  在Application标签中打开 Assembly Information 将Make assembly Com-Visible一项选中。再切换到Build标签将 Register for COM interop一项选中。

  Guid的生成:打开Visual Studio Command Prompt 输入guidgen 命令调出工具。类型选择Registry Format,点击New Guid,然后COPY出来。

  [DispId(1)]为函数的标识。如果有多个函数可相应的在函数前面加[DispId(2)], [DispId(3)]…

  设置强名称:打开Visual Studio Command Prompt 输入:sn -k TestComkey.snk 生成TestComkey.snk 文件

  打开 Project-->  Properties菜单  在Signing标签中选中 Sign the assembly,选择刚刚生成的强名称文件TestComkey.snk

  编译程序Debug目录中会生成 TestCom.dll 和TestCom.tlb

  手工注册Com方法:

  打开Visual Studio Command Prompt进入Debug目录,运行命令注册:

  regasm TestCom.DLL /tlb:TestCom.tlb

  gacutil -i TestCom.DLL (执行这个命令需要TestCom.DLL 具有强名称)

 

二、Java调用Com

部署jacob

◆在开发环境中引入jacob.jar

◆拷贝jacob-1.15-M3-x86.dll 文件到 C:\Windows\System32目录,如果是Web应用的话还需要拷贝到jdk1.5.0_16\bin目录(jdk安装目录下的bin目录)

java调用代码

import com.jacob.activeX.ActiveXComponent;  
import com.jacob.com.ComThread;  
import com.jacob.com.Dispatch;  
import com.jacob.com.Variant;  
public class test 
{       
 /**       
  * @param args       
  */      
 public static void main(String[] args) 
 {          
  // TODO Auto-generated method stub          
  try{              
   ActiveXComponent dotnetCom = null;              
   dotnetCom = new ActiveXComponent("TestCom.Encrypt");              
   Variant var = Dispatch.call(dotnetCom,
   "GetEncrypt","str1","str2");              
   String str  = var.toString();             
  }catch(Exception ex){                  
   ex.printStackTrace();              
  }      
 }   
}

 

这便完成了Java调用.net DLL的方法!

分享到:
评论

相关推荐

    COM 组件设计与应用

    COM 组件设计与应用(七)——编译、注册、调用 COM 组件设计与应用(八)——实现多接口 COM 组件设计与应用(九)——IDispatch 接口 for VC6.0 COM 组件设计与应用(十)——IDispatch 接口 for VC.NET COM 组件...

    asp.net Jmail组件使用小记

    安装:要在机器上安装Jmail组件,其实就是一个“Jmail.dll”,一般会被安装到C:\windows\system32\目录中。如果下载到的仅仅是Jmail.dll这个文件,就可以手动放到这个目录,不过别的目录应该也可以,我没试过。 二...

    ASP.NET结合COM组件发送Email

    在系统目录(如c:winnt或c:windows)的system32子目录中可以找到一个名称为 cdosys.dll的文件,我们可以通过ASP.NET调用此COM组件来实现Email的发送。cdosys构建在SMTP协议和NNTP协议之上, 并且作为Windows2000 ...

    VC++.NET取消COM服务组件注册的程序

    摘要:VC/C++源码,系统相关,COM服务, 组件注册 VC++.NET取消COM服务组件注册的程序,在窗口中点击右键即可看到取消COM组件的窗口。编辑注:如果测试中导致Windows部分功能不可用,则可通过恢复组策略的方式的恢复,...

    VC.NET注册COM服务组件

    注册COM服务组件,对象为编译成DLL文件格式的组件或控件,适合初级学习者的代码,程序运行效果如运行截图所示,VC源码请运行于VisualStudio2010环境下。 运行环境:Windows/Visual C/C++

    C#/VB.NET 调用C++的COM组件/C++的DLL的方法

    1、调用COM组件需要先注册对应的组件DLL(CppSvc.DLL) 2、VB.net/C#工程需要.net framwork 4.8(可以根据你自己的环境修改工程属性) 3、默认选中了x64配置,所有的DLL/组件/调用客户端都生成Windows x64代码,不要...

    C#_COM组件注册与调用

    regasm.exe路径 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 单独建立一个文件夹放入dll,tlb文件 将以上路径配置到电脑环境变量PATH即可在管理员权限下的控制台输入一下命令 1、cd /d dll路径 然后回车,...

    COM_组件设计与应用

    COM_组件设计与应用(07)—编译、注册、调用 COM_组件设计与应用(08)—实现多接口 COM_组件设计与应用(09)—IDispatch_接口(VC6) COM_组件设计与应用(10)—IDispatch接口for VC.NET COM_组件设计与应用(11)—...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    用C++写的com自注册进程内组件加测试程序Dictionary.rar

    我文章里面有注意事项https://blog.csdn.net/BooleanWater/article/details/102845245 用C++写的com自注册进程内组件加测试程序

    一个让.Net组件不需要作为COM注册即可被其他语言调用的C#模板

    NULL 博文链接:https://sheng.iteye.com/blog/1839504

    ASP.NET 2.0技术内幕

    1.2 ASP.NET组件模型 11 1.2.1 组件交互模型 11 1.2.2 runat属性 12 1.2.3 ASP.NET服务器控件 15 1.3 ASP.NET开发栈 16 1.3.1 表示层 16 1.3.2 页面框架 17 1.3.3 ...

    BarcodeNet条形码组件

    先运行Com目录下的RegisterForCOM.bat进行组件注册,然后才能使用。 使用方法可以参考 delphi目录下demo 程序。 二、条码识别组件(BarcodeScanNet.dll) 1.功能说明  BarcodeScanNet是 .Net 下的条形码图像扫描...

    麦克风组件开发MCI32.OCX

    用来开发麦克风录音的一系列功能。下载后用regsvr32注册。 在.net COM组件中引用。

    基于组件的程序设计

    基于组件编程有很多优势:代码重用,团队支 基于组件编程....NET .NET替代了 替代了COM COM,提供了一个全新模 ,提供了一个全新模 型:语言独立的,注册自由,版本明确 型:语言独立的,注册自由,版本明确 的 的……

    连接COM与.NET的桥梁(三)——COM服务器的COM Interop方式

    这部分的示例代码叫做ComP6srcDNet中的ComP5工程,呵呵,有点眼熟吧,其实我的目的只是想介绍.net部分,所以COM和MFC部分引自杨老师的“COM 组件设计与应用(七)——编译、注册、调用” ,只有Use_Net的代码是我写...

    ASP.NET的网页代码模型及生命周期

    该程序可以是.aspx页面中的处理程序,也可以是开发者自定义的类库,或者COM组件等。事件驱动处理如图4-7所示。 图4-7 页面框架的事件驱动处理模型 上图则说明了当一个浏览者通过浏览器触发ASPX页面时,浏览器、...

    COM组件开发及方法调用方法

    包括两个例子: 1 用vc6.0写的com ,并在vc6.0中 用三种方法调用。可以在.net中编译通过 2 用c#写的com, 用.net c++ 调用 注意:如果不编译com项目,在使用前需要注册com

    Aspose.Words for .NET 9.7.0 官方同步破解版

    简单破解Aspose.Words for .NET 9.7.0 官方更新时间为02-06-2011,只是去除未注册情况下文档中的"Evaluation Only. Created with Aspose.Words. Copyright 2003-2010 Aspose Pty Ltd."字样.其他地方未作修改,因此你不...

    jmail发送邮件 asp.net使用jmail

     与此相同的还有CDONTS.NewMail,Persits.MailSender,IISmail.Iismail等等,他们唯一区别就是jmail只需要注册一个dll组件即可被调用,而其他则需要在iis上设置发布smtp服务器  (1)Body(信件正文) : 字符串  ...

Global site tag (gtag.js) - Google Analytics