这几天接到了一个项目,就是关于做中控指纹考勤机二次开发的,而中控的考勤机的dll是activex控件,所以使用jacob可以直接读取。在用jacob时,在做new active object的时候,里面传的参数是中控考勤机dll注册后的prog Id(zkemkeeper.ZKEM.1是在注册表里面找到的,在注册里面就搜索zkemsdk.dll就可以找到其progid了),不是classid。

做这个项目时,要把中控的dll文件和jacob的jacob.dll拷到system32 下面 ,在做该项目时,要在工程中引入jacob.jar包.

下面介绍几个class:

1. ActiveXComponent Class: 可以说将com封装成一个组件。
2. Dispatch Class: 表示MS level dispatch object!相当于在windows上的资料结构。
3. Variant Class: 在java 与com中做互相通信的参数

4. ComException Class: COM JNI 的错误处理。

幾個主要的函數:

1. call method: Dispatch class的函數!可用來呼叫COM/DLL的函數!它可以回傳結果(Variant variable)!
2. callSub method: 跟call函數類似!不過不回傳值!
3. get method: Dispatch class的函數!用來取得COM的屬性!
4. put method: Dispatch class的函數!用來設定COM的屬性!
5. invoke method: 等同於call函數!不過使用方式較複雜!
6. invokeSub method: 等同於callSub函數!不過使用方式較複雜!
7. getProperty method: ActiveXComponent class的函數!用來取得COM的屬性!
8. setProperty method: ActiveXComponent class的函數!用來設定COM的屬性!

通常要建立一個JACOB程式分成下面幾個步驟:

1. 構建ActiveX元件物件:
ActiveXComponent word = new ActiveXComponent("Word.Application");
其中的ActiveXComponent建構式內的值和你需要調用的ActiveX控制項有關!
一般常用的MS控制項

InternetExplorer: InternetExplorer.Application
Excel: Excel: Application
Word: Word.Application
Powerpoint: Powerpoint.Application
vb/java Script: ScriptControl
windows media Player: WMPlayer.OCX
Outlook: Outlook.Application
Visio: Visio.Application
DAO: DAO.PrivateDBEngine.35
MultiFace: MultiFace.Face

另外可用clsid建立! 如:  ActiveXComponent word = new ActiveXComponent("clsid:000209FF-0000-0000-C000-000000000046");

2. 設定或元件屬性:
如我要將word開啟後不隱藏!
word.setProperty("Visible", new Variant(true));//都是透過Variant來傳參數與COM溝通
Variant vs=Word.getProperty("Visible");

Dispatch class則透過了get與put
如:
Dispatch oDocuments = Word.getProperty("Documents").toDispatch();//透過toDispatch轉型
Variant v= Dispatch.get(oDocuments,"Parent");

3. 執行功能:
可以透過call! 也可以透過callN! 兩者不同點在於callN是以陣列方式傳參數!
Dispatch oDocument = Dispatch.call(oDocuments, "Open",  new Variant("C://atest.doc")).toDispatch();
Dispatch oDocument = Dispatch.callN(oDocuments, "Open", new Variant[]{ new Variant("C://atest.doc")}).toDispatch();

再用一個Dispatch的變數oDocument! 是為了之後能關閉close
Dispatch.call(oDocument, "Close", new Variant(false));
        
4. 關閉與回收資源
若有開啟檔案則要關閉與回收資源
if (Word != null) {
            Word.invoke("Quit", new Variant[] {new Variant(0)});
            Word = null;
            ComThread.Release();
}

Jacob的简单使用相关推荐

  1. COM组件浅析(一) - 使用Java操作Adobe Illustrator

    目录 一.下载Jacob 二.创建JacobDemo maven工程,引入jacob依赖 1. 创建工程 2. 引入jacob依赖 3. 在pom.xml中引入jacob.jar 三.在代码中操作Ad ...

  2. jacob 详解 语音_基于jacob调用windows语音模块的简单demo

    前两天用Java重构一个取号机业务的时候遇到需要调用windows自带的语音模块,算是记录下吧! 常规操作 1.首先在网上下载jacob的jar包,和对应的dll文件,(这里dll文件是区分32位和6 ...

  3. jacob简单使用CAD与Excel

    调试过的代码,供有相同需求的学习使用.相当于可以把Exce与CAD相接合使用的第一步工作. 一.调用CAD import com.jacob.activeX.ActiveXComponent; imp ...

  4. jacob操作office word简单教程

    现在的项目中操作word文件比较多,word文件的加密解密,转换为各种格式,插入图片,添加水印.html转word等等各种东西,大家也都知道,java语言是不能直接操作word或者excel的,不像C ...

  5. KBQA相关论文分类整理:简单KBQA和复杂KBQA

    ©作者 | 蒋锦昊 学校 | 中国人民大学博士生 研究方向 | 知识推理和问答系统 引言 基于知识图谱的问答系统(Knowledge Based Question Answering, KBQA)目标 ...

  6. 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)

    http://www.educity.cn/wenda/351088.html 使用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap s ...

  7. 克服Dropout缺陷,简单又有效的正则方法:R-Drop

    本文转自微软研究院AI头条. 编者按:深度神经网络是深度学习的基础,但其在训练模型时会出现过拟合的问题,而简单易用的 Dropout 正则化技术可以防止这种问题的发生.然而 Dropout 的操作在一 ...

  8. java使用jacob操作word文档

    ava使用jacob操作word文档 java调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office ...

  9. 采用jacob实现word转pdf

    网络上已经有很多这方面的内容,在用之前也是参考了好多别人的文章,下面记录下我自己的整合过程.整个过程都比较简单: 开发环境:win8 64位系统,在2008下面部署也是一样的. 文档要求jdk的版本要 ...

最新文章

  1. 高并发整体可用性:一文详解降级、限流和熔断
  2. linux shell 运算符 | || () {}
  3. OpenGL 学习笔记(3)绘制几何物体
  4. tomcat_动态java项目的目录结构
  5. layui按钮展开、_layui可折叠的组织架构树形图
  6. maya多边形建模怎样做曲面_一名合格的模型师,不得不学习掌握的几种建模方法,你会了吗?...
  7. linux apache mod_jk,Linux上安装Apache,安装mod_jk,相关配置
  8. hihocoder234周 计算不包含黑点的矩形个数
  9. 如何下载jdk源码进行阅读
  10. 三星固态硬盘linux驱动,三星850evo固态硬盘驱动程序官方版
  11. 硬盘格式化后数据怎么恢复找回?试下这个!
  12. ireport 循环_IReport 常见问题整理
  13. C++实现端口扫描器
  14. 微信html代码怎么换行,微信小程序文本如何换行
  15. API 接口监控产品全新改版,免费开放全部功能
  16. 招投标过程---投标之述标 大杂烩
  17. 微信公众号无限定时群发系统
  18. CSDN阅读全文自动展开插件,安排上!
  19. 【linux kernel】linux内核如何唤醒线程
  20. linux-tomcat下载安装(最新)

热门文章

  1. 朋友,如果你也热爱销售,喜欢销售,请你认真阅读,相信你会有更多的收获!
  2. android 手机安装怎么信任证书,Charles中关于手机证书安装以及信任
  3. 光照下的图片的提取(以光照下的彩色气球为例)
  4. MySQL-06-RedoLog
  5. Tencent APIJSON-自动化接口和文档 ORM 库开源啦
  6. 期末考试+竞赛班选拔考试
  7. html文本框%3cdiv%3e,localStorage.setItem不能存储html的字符串
  8. python安装torch详细步骤
  9. 按什么键启用计算机管理,开机按什么进入大白菜_电脑开机按哪个键启动大白菜U盘-系统城...
  10. 智慧城市改变生活 “滨州掌上公交”带你从容出行