关闭

Java调用dll Java调用COM组件

标签: JAVA调用dll调用COM组件
700人阅读 评论(0) 收藏 举报
分类:

1、JNative

JNative调用dll很方便,只是需要dll有导出函数,否则调不到。就是说要调用的方法必须是导出函数。如果不知道你的dll有没有这个导出函数,可下载这个软件查看——DLL函数查看器

下载JNative开源项目(百度之),解压开,拿到三个文件,分别是:JNativeCpp.dlllibJNativeCpp.soJNative.jar  
——JNativeCpp.dll Windows下用的,拷贝到c:/windows / system32目录下

如果不行,可能是64b系统,在c:/windows /SysWOW64文件夹下面再放一个

——libJNativeCpp.so Linux下的,拷贝到系统目录下;

——JNative.jar 这是一个扩展包,导入工程LIB中或将其拷贝到jdk\jre\lib\ext 下,系统会自动加载。

例子:使用JNative组件调用一个测试应用服务器状态的TestABC.dll文件,Dll文件中包含一个TestMain(String ip,int port)方法,返回一个整形的结果(1或0)

public static void main(String[] args) {
		System.loadLibrary("TestABC");
		JNative n = null;
		try {
			n = new JNative("TestABC", "TestMain");
			// n.setRetVal(Type.STRING);
			int i = 0;
			n.setParameter(i++, Type.STRING, "192.168.1.108");
			n.setParameter(i++, Type.INT, "" + 1000);
			n.invoke();
			return Integer.parseInt(n.getRetVal());
		} catch (NativeException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
	}


2、Jacob

Jacob调用COM组件,如果dll文件可以注册为COM组件,可以使用Jacob方式调用,很好用,而且不需要导出函数。

Jacob下载:点击打开链接

例子:

第一步,注册组件,注册方式为 开始——运行——输入命令cmd——输入命令regsvr32——空格——拖入要注册的dll文件——回车

显示成功,则注册完成。

第二步,去注册表中把你注册com组件找到,一般命名方式是“dll名字+ . +后缀”,可以根据dll的名字找,这是获取此com组件的关键,同时进一步判断你注册成功了。

第三步,写代码调用

ActiveXComponent axc = new ActiveXComponent("testcom.Test");//获取对象
Dispatch dis = axc.getObject();

String str ="";//初始化
Variant v1 = new Variant(str,true);//输出参数定义,必须这样,否则得不到输出参数的值

Variant v2=new Variant();//返回值定义
v2 = Dispatch.call(dis, "getFace", "100",200,v1);

System.out.println("输出参数值:"+v1);
System.out.println("返回值:"+v2);
代码解释:调用方法时,注意此处有Java中没有的概念,叫做输出参数,用于返回值不够时的传值。输出参数的定义如上,一般参数定义与Java相同,直接传输即可。

忘了说最初,需要把jacob解压开,获取里面的dll文件,放到c:/windows / system32目录,建议64b的系统再放一份到c:/windows /SysWOW64文件夹下。里面的jacob.jar就不用多说了吧,放到项目里导入就行啦。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33931次
    • 积分:529
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:29篇
    • 译文:0篇
    • 评论:3条
    最新评论