江西广告网

标题: 浅析开源产品:JACOB [打印本页]

作者: glwolf    时间: 2009-3-17 08:14
标题: 浅析开源产品:JACOB
JACOB在很长一段时间收到各位JAVA编程人士的重用,许多和小寻一样热爱编程的朋友找到我讨论各种关于JACOB的问题,在这些前来讨论技术的朋友当中,不少朋友是第一次接触,被JACOB语法所迷惑,不知所措,为了让大家少走冤枉路,小寻特意写下这篇文章,由于本人技术浅薄,如有不足,还请批评指正。 JACOB是来自danadler.com公司的开源产品,大家以往都是通过http://danadler.com对该公司的主页做访问,但是你现在打开会看到“Internet Explorer 无法显示该网页” 如果我没记错我们以往使用的jacob_1.9.zip、jacob_1.7.zip都是从http://danadler.com/jacob 处下载的,但目前看来这个网址不可用了。做一下搜索,发现sourceforge.net 有一个叫jacob的项目,想是该公司搬家了吧!通过http://sourceforge.net/projects/jacob-project/ 我们访问到该工程主页,然后下载jacob-project 1.14.3 晕连版本也变了,再也找不到那些老版本了。 源代码下载:jacob-1.14.3_src.zip 代码包下载:jacob-1.14.3.zip API分析:(jacob-1.14.3\docs\api\index.htm) JACOB里的总共有两个包: com.jacob.activeX:JACOB可以通过它调度(Dispatch)activeX 控件 com.jacob.com:JACOB通过它调用系统DLL (activeX是由微软公司推出的用于Internet的技术,以前曾经被称为OLE 和OCX,activeX web插件可以用于各种非HTML的工作,比如,对MicrosoftExcel 或 MicrosoftWord 文件做操作、解析JS,VB脚本、播放FALSH、调用Microsoft MediaPlayer等。) 内部结构:

登录/注册后可看大图
有一点可以确定的是在JACOB内部,com.jacob.activeX是建立在com.jacob.com之上的。 而com.jacob.com中有一个很基础的类com.jacob.com.JacobObject 其中比较常用的两个类com.jacob.com.Dispatch和com.jacob.com.Variant便是继承自它。(com.jacob.com.Dispatch;里面提供了调度MS windows系统API,比如进程的管理。com.jacob.com.Variant; 里面数据类型的转换的方法,Variant类本身是JACOB的最最基本的数据类,他可以被转换成任何的类,如: 使用toDispatch();可以将Variant转化成Dispatch对象。) com.jacob.com中还有其他的一些类不是建立在JacobObject之上的,如com.jacob.com.ComThread(负责COM线程管理。) com.jacob.com所有的类,包括上面说到的JacobObject、ComThread,都是通过com.jacob.com.LibraryLoader中的loadJacobLibrary()方法:

登录/注册后可看大图
static

登录/注册后可看大图

登录/注册后可看大图
{

登录/注册后可看大图
LibraryLoader.loadJacobLibrary();

登录/注册后可看大图
} 调用jacob.dll内的方法,比如:Dispatch.java就通过LibraryLoader和Dispatch.h、Dispatch.cpp建立联系。 从而建立起java到jacob.dll到jni的之间的联系。 出处:http://www.blogjava.net/lusm




欢迎光临 江西广告网 (http://bbs.jxadw.com/) Powered by Discuz! X3.2