- 浏览: 518440 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
本文将详细为大家介绍一个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的方法!
发表评论
-
程序集与托管模块
2010-10-26 16:22 1241本文是为了学习程序集而整理的网上资料,主要包括两个部分,概念和 ... -
.NET程序集
2010-10-26 15:03 2231【主要内容】@将源代码 ... -
strong-named
2010-10-26 14:48 876前段时间自己整理的一个有关strong-named assem ... -
CLR笔记(二)
2010-10-26 13:53 9826.类型和成员基础 1.Class的可见性有publi ... -
CLR笔记(一)
2010-10-26 13:22 18041.CLR的执行模型 ... -
Java调用C#
2010-10-25 22:49 1838Java调用C# 下载: http://www.co ... -
Managed Extensions for C++ Reference
2010-10-25 18:10 1389Managed Extensions for C++ Refe ... -
注入托管代码
2010-10-25 17:18 1721前言:本文的重点不在 ... -
jni调用dll及dll已用其它dll的资料
2010-10-25 16:00 899http://blog.csdn.net/KONGKONGWJ ... -
C# method calls within a Java program
2010-10-23 16:11 1066.net产生的比java晚,其类库的封装在某些方面也比ja ... -
走近COM Interop
2010-10-23 15:40 1637走近COM Interop—— RCW ... -
get chartobjects from VB.net
2010-10-18 10:34 1341Excel.Sheets sheets = oWB.Works ... -
VB.NET调用DLL实现方法解析
2010-10-13 10:43 3510VB.NET开发平台 ... -
VB.net 的Me My MyBase MyClass
2010-10-11 23:46 2014第一次接触 Visual Basic 中的 Me、My、M ... -
使用.Net访问Office编程接口(PIA和IA的区别)
2010-10-11 10:25 3501在这篇文章里面,我将向大家介绍如何在.Net中访问Offi ... -
Exposing .net Components to Com
2010-10-11 09:47 813http://www.codeproject.com/KB/C ... -
vb.net 封装组件成com的方法
2010-10-10 17:16 1539前几天一直在研究如何将.net的组件封装成com供非托管代码调 ... -
Writing an Activex control in VB.net
2010-10-09 22:33 1407The problem with that example i ... -
VB set Excel color
2010-10-08 17:30 938Sub Macro3()'' Macro3 Macro' ' ...
相关推荐
1. 注册.NET COM组件:使用regasm命令行工具注册.NET Assembly,使其在COM中可见。 2. 在PB中引用.NET组件:通过PB的“对象”菜单选择“类型”->“新建类型”,然后在“类型”对话框中选择“添加引用”来浏览并添加...
下面我们将详细探讨如何在VB.NET中创建和注册一个COM组件。 1. **创建VB.NET类库项目** 首先,我们需要在Visual Studio中创建一个新的VB.NET Class Library项目。这可以通过选择“文件” > “新建” > “项目”,...
2. **注册.NET COM组件**:生成的DLL文件需要在系统注册表中注册,使得PowerBuilder能够找到并调用它。这通常通过运行`regasm`命令行工具完成,或者通过安装程序自动执行注册过程,例如压缩包中的`registerproduct....
#### .Net组件与COM组件注册的差异 在探讨如何注册和部署使用.Net编写的ArcGIS扩展组件之前,我们有必要了解.Net组件与传统的COM组件在注册过程中的差异。在COM时代,如使用VB6开发的ArcGIS扩展组件,可以通过...
1. **创建COM组件**:使用C#编写一个类库项目,然后将其注册为COM可见,这样.NET组件就可以被COM+识别。 2. **导入类型库**:在.NET项目中,通过添加引用或使用`tlbimp.exe`工具导入COM组件的类型库。 3. **使用...
3. **注册COM组件**:使用`regasm.exe`工具注册生成的DLL文件,将.NET组件的相关信息注册到系统注册表中,使得COM客户端可以找到并使用它。批处理文件可能就是用来自动化这个过程的脚本。 4. **权限与安全**:在...
4. **事件处理**:组件支持事件驱动编程,开发者可以注册事件处理器来响应SAP Business One中的特定事件,如数据变更、事务完成等。 5. **事务处理**:为了确保数据的一致性,`Interop.SAPbobsCOM`支持事务处理。...
标题中的“一个让.Net组件不需要作为COM注册即可被其他语言调用的C#模板”指出,这个项目提供了一种方法,使得.NET编写的组件能够不依赖于COM注册就能被非托管代码(如C++、Java等)调用。在.NET框架中,通常使用COM...
regasm.exe路径 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 单独建立一个文件夹放入dll,tlb文件 将以上路径配置到电脑环境变量PATH即可在管理员权限下的控制台输入一下命令 1、cd /d dll路径 然后回车,...
本文将深入探讨C#中如何创建、注册COM组件以及如何在其他应用程序中调用这些组件,这对于初学者来说是一次宝贵的学习机会。 首先,我们需要理解什么是COM组件。COM是微软提出的一种二进制标准,它允许不同语言编写...
在本场景中,我们关注的是如何编写一个能够接收并处理启动参数的COM组件,以便在嵌入到网页中的时候,可以从网页传递数据给这个组件。这涉及到的知识点包括COM组件的基本原理、接口设计、参数传递机制以及与Web交互...
COM 组件设计与应用(七)——编译、注册、调用 COM 组件设计与应用(八)——实现多接口 COM 组件设计与应用(九)——IDispatch 接口 for VC6.0 COM 组件设计与应用(十)——IDispatch 接口 for VC.NET COM 组件...
安装:要在机器上安装Jmail组件,其实就是一个“Jmail.dll”,一般会被安装到C:\windows\system32\目录中。如果下载到的仅仅是Jmail.dll这个文件,就可以手动放到这个目录,不过别的目录应该也可以,我没试过。 二...
10. **.NET与COM互操作**:随着.NET框架的出现,微软引入了.NET COM互操作性,使得.NET组件可以与COM组件交互。这使得旧的COM组件可以在新的.NET环境中继续使用,同时.NET组件也可以暴露给COM客户端。 总的来说,...
《COM与.NET互操作性》是一本全面的技术参考书,不仅适用于希望将现有COM组件迁移到.NET环境的开发者,也适合那些想要从.NET项目中利用COM资源的程序员。通过深入研究这些互操作性技术,开发者可以提高应用程序的...
ASP.NET结合COM组件发送Email是一种常见的在Web应用中实现邮件发送功能的方法。在这个过程中,主要利用的是Windows系统中内嵌的CDOSYS组件,它基于SMTP(Simple Mail Transfer Protocol)和NNTP(Network News ...
在.NET 2.0中创建COM组件时,首先需要定义一个接口(IMyService),它将作为与外部应用程序通信的契约。接口使用`[Guid]`属性指定一个全局唯一标识符(GUID),这是COM组件识别的关键。接口中的方法或属性通过`...
摘要:VC/C++源码,系统相关,COM服务, 组件注册 VC++.NET取消COM服务组件注册的程序,在窗口中点击右键即可看到取消COM组件的窗口。编辑注:如果测试中导致Windows部分功能不可用,则可通过恢复组策略的方式的恢复,...