`

.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的方法!

分享到:
评论

相关推荐

    PB 调用.NET COM组件

    1. 注册.NET COM组件:使用regasm命令行工具注册.NET Assembly,使其在COM中可见。 2. 在PB中引用.NET组件:通过PB的“对象”菜单选择“类型”->“新建类型”,然后在“类型”对话框中选择“添加引用”来浏览并添加...

    vb.net 封装组件成com的方法

    下面我们将详细探讨如何在VB.NET中创建和注册一个COM组件。 1. **创建VB.NET类库项目** 首先,我们需要在Visual Studio中创建一个新的VB.NET Class Library项目。这可以通过选择“文件” > “新建” > “项目”,...

    PB90调用.net的COM组件

    2. **注册.NET COM组件**:生成的DLL文件需要在系统注册表中注册,使得PowerBuilder能够找到并调用它。这通常通过运行`regasm`命令行工具完成,或者通过安装程序自动执行注册过程,例如压缩包中的`registerproduct....

    使用.Net开发ArcGIS 9扩展组件的注册与部署.pdf

    #### .Net组件与COM组件注册的差异 在探讨如何注册和部署使用.Net编写的ArcGIS扩展组件之前,我们有必要了解.Net组件与传统的COM组件在注册过程中的差异。在COM时代,如使用VB6开发的ArcGIS扩展组件,可以通过...

    .NET COM+ 开发实际例子

    1. **创建COM组件**:使用C#编写一个类库项目,然后将其注册为COM可见,这样.NET组件就可以被COM+识别。 2. **导入类型库**:在.NET项目中,通过添加引用或使用`tlbimp.exe`工具导入COM组件的类型库。 3. **使用...

    注册.Net开发的Com类

    3. **注册COM组件**:使用`regasm.exe`工具注册生成的DLL文件,将.NET组件的相关信息注册到系统注册表中,使得COM客户端可以找到并使用它。批处理文件可能就是用来自动化这个过程的脚本。 4. **权限与安全**:在...

    SAP Business One .Net编程组件 Interop.SAPbobsCOM

    4. **事件处理**:组件支持事件驱动编程,开发者可以注册事件处理器来响应SAP Business One中的特定事件,如数据变更、事务完成等。 5. **事务处理**:为了确保数据的一致性,`Interop.SAPbobsCOM`支持事务处理。...

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

    标题中的“一个让.Net组件不需要作为COM注册即可被其他语言调用的C#模板”指出,这个项目提供了一种方法,使得.NET编写的组件能够不依赖于COM注册就能被非托管代码(如C++、Java等)调用。在.NET框架中,通常使用COM...

    C#_COM组件注册与调用

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

    C# com 组件注册及调用

    本文将深入探讨C#中如何创建、注册COM组件以及如何在其他应用程序中调用这些组件,这对于初学者来说是一次宝贵的学习机会。 首先,我们需要理解什么是COM组件。COM是微软提出的一种二进制标准,它允许不同语言编写...

    编写可传递参数的COM组件

    在本场景中,我们关注的是如何编写一个能够接收并处理启动参数的COM组件,以便在嵌入到网页中的时候,可以从网页传递数据给这个组件。这涉及到的知识点包括COM组件的基本原理、接口设计、参数传递机制以及与Web交互...

    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这个文件,就可以手动放到这个目录,不过别的目录应该也可以,我没试过。 二...

    注册com组件

    10. **.NET与COM互操作**:随着.NET框架的出现,微软引入了.NET COM互操作性,使得.NET组件可以与COM组件交互。这使得旧的COM组件可以在新的.NET环境中继续使用,同时.NET组件也可以暴露给COM客户端。 总的来说,...

    COM and.NET Interoperability

    《COM与.NET互操作性》是一本全面的技术参考书,不仅适用于希望将现有COM组件迁移到.NET环境的开发者,也适合那些想要从.NET项目中利用COM资源的程序员。通过深入研究这些互操作性技术,开发者可以提高应用程序的...

    ASP.NET结合COM组件发送Email

    ASP.NET结合COM组件发送Email是一种常见的在Web应用中实现邮件发送功能的方法。在这个过程中,主要利用的是Windows系统中内嵌的CDOSYS组件,它基于SMTP(Simple Mail Transfer Protocol)和NNTP(Network News ...

    使用.NET2.0 编写COM组件供Visual Basic调用.docx

    在.NET 2.0中创建COM组件时,首先需要定义一个接口(IMyService),它将作为与外部应用程序通信的契约。接口使用`[Guid]`属性指定一个全局唯一标识符(GUID),这是COM组件识别的关键。接口中的方法或属性通过`...

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

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

Global site tag (gtag.js) - Google Analytics