J在最近的一个项目中,客户要求我们用JAVA做一个接口,这个接口要调用另外一方提供的一个OCX控件。
最初就想到就JAVA 的JNI技术,可是在网上看了下,感觉有点麻烦,因为那样做的话,你要先自己在JAVA中定义好所有的方法接口,生成对应的.h文件,然后再用这个.h文件用C/C++中调用这个OCX,这样才能实现。
好在柳暗花明又一村啊,看到了JACOB这个开源项目,可是在网上例子很少,而DOC也没有,简直是看得我一头雾水。在我潜心的搜索下,然后再研究了一番,终于达到了需要的 目的。下面把自己的心得与大家分享。
1。 首先,下载JACOB这个文件,可以到http://sourceforge.net上面去下载。
2。打开文件,可以看见里面有2个重要的文件,一个是jacob.dll 另一个是jacob.jar文件,此时要注意了,我们的文件的放置位置特别重要。DLL文件直接放到SYSTEM32下就行了;我开发的时候是用的是JB,所以不需要设置JAR文件到CLASSPATH,直接在工程中引用就行了。
3.你首先要保证你的COM组件被注册了,可以去注册表查查ID。
3。上正题了 ,来点具体的 例子。
首先,我有一个.OCX后缀的COM组件,其中有很多方法和属性。
METHOD: LOGIN(), VERSION();
PAPAMETERS:userid, psw,url;
下面是我的部分 java代码:
import com.jacob.com.*;
import com.jacob.activeX.*;
public class testJACOB
{
ActiveXComponent comx=new ActiveXComponent("myCom.com"); //myCom.com是在注册表中的组件名
Dispatch.call((Dispatch)comx,"VERSION"); //就是调用VERSION方法。
Dispatch.put((Dispatch)comx,"userid","MY"); //把“MY”付给userid属性。
Dispatch.put((Dispatch)comx,"psw","123"); //把“123”付给psw属性。
......
}
看吧,就这么简单。当然还有很多方法,大家可以去参详,有什么问题可以起一来讨论。