java 调用windows的COM组件举例(使用JACOB)
java 调用windows的COM组件举例(使用JACOB) (转自这里)
最近公司需要做一个效果,开发一个程序能在程序运行时打开microsoft office的相关软件,实时写入,然后能关闭,你能看到数据写入的效果。如下图:
发现用java写程序的话需要通过JACOB来调用windows 的com组件,关于jacob网上资料也不多,提供个官网大家自己看看吧:https://sourceforge.net/projects/jacob-project/
下面是一个java调用的小例子,效果是弹出一个消息窗口。

需要引入的包如下:
Jacob_1.16-M1.jar
下载地址如下:http://pan.baidu.com/s/1b2KCSQ
主程序:JaxbTest.java
package com.jacob.burns;
import com.jacob.activeX.ActiveXComponent;
public class JaxbTest {
public static void main(String[] args) {
ComThread.InitSTA();// 启动线程
// 注册表中取得注册MyOcx.dll的ProgId,或clsid。
ActiveXComponent com = new ActiveXComponent("MyOcx.MyDialog");//在MyOcx中搜索ProgID = s 'MyOcx.MyDialog.1'
// Dispatch对象看成是对Activex控件的一个操作
Dispatch disp = com.getObject();
// 假设MsgBox是MyOcx.dll中的一个方法
Dispatch.call(disp, "MsgBox", "HelloWorld_Windows弹窗!");
ComThread.Release();// 结束进程
}
}
在执行程序之前,先执行下这个dll文件,MyOcx.dll,dll下载地址在: http://pan.baidu.com/s/1nuDn9up,执行方式是:
打开cmd命令窗口,输入:regsvr32 D:/MyOcx.dll(我的MyOcx.dll文件在D盘根目录下。),执行完成后,会弹出框提示已经注册完dll文件的信息。对于dll文件,你可以通过这个工具打开查看:eXeScope 下载地址:http://pan.baidu.com/s/1bpsPzWz
打开查看MyOcx.dll文件,其中关注下这个CLSID值,如下图:
CLSID的值为:8BE91377-DC16-45EF-8047-AD13354E755E
在windows的注册表中搜这个CLSID,其中打开注册表的方式是:在windows键+R,然后输入”regedit”,弹出注册表窗口,然后,Ctrl+F,输入CLSID的值:8BE91377-DC16-45EF-8047-AD13354E755E,回车,等待片刻后,会定位到你要搜索的内容。如下图:

红色圈起来的后两个最后都有ProgID,查看后,发现右边表格的数据列一个是MyOcx.MyDialog,一个是MyOcx.MyDialog.1,这两个值在上面的java程序中出现的位置可以相互替换,
接下来就可以执行java程序了,执行结果是:如图:

java 调用windows的COM组件举例(使用JACOB)的更多相关文章
- java 调用windows bat脚本
当我们需要在java程序中调用外部程序,我们可用通过Runtime.exec()调用来完成. The class java.lang.Runtime features a static method ...
- Java调用windows命令
JAVA调用windows的cmd命令 用起来会让程序变得更加简洁明了,非常实用. 核心就是使用 Runtime类. cmd的xcopy就有很强大的文件夹,文件处理功能. 下面就以xcopy来说明,如 ...
- java调用windows的wmi获取设备性能数据
java调用windows的wmi获取监控数据(100%纯java调用windows的wmi获取监控数据) 转:http://my.oschina.net/noahxiao/blog/73163 纯j ...
- 实现通过COM组件方式实现java调用C#写的DLL文件的完整demo
最近因为工作需要,客户那边工程师使用的是JAVA语言开发的程序,我们这边平台中是用C#语言开发的,因为有些操作必须统一,所以我在网上查找解决方法,自己也实践过,在这里做个笔记吧,分享一下. 声明:下面 ...
- Java调用cmd压缩文件
今天在做一个java调用windows的压缩命令时遇到一奇怪问题代码如下: String cmd ="C:/Program Files (x86)/WinRAR/rar.exe a c:/t ...
- 如何在Processing中调用Windows应用程序
Processing调用了exe就意味着失去了跨平台.调用的过程是,先得到当前的runtime,然后调用runtime的exec()方法,在exec()传入的是字符串参数,这个参数很重要,该有空格的地 ...
- 通过COM组件方式实现java调用C#写的DLL文件
转自这里 最近一段时间单位在做一个Web项目,工程师用JAVA语言,需要公用人员信息,统一用户名和密码,原有的平台中是用C#语言开发的,在网上查找解决方法,通过JAVA调用C#的DLL文件实现.网上资 ...
- 通过COM组件方式实现java调用C#写的DLL文件 转
最近一段时间单位在做一个Web项目,工程师用JAVA语言,需要公用人员信息,统一用户名和密码,原有的平台中是用C#语言开发的,在网上查找解决方法,通过JAVA调用C#的DLL文件实现.网上资料很多,自 ...
- windows文本转语音 通过java 调用python 生成exe可执行文件一条龙
我已记不清 我失败过多少次 ,找过多少资料 ,但是功夫不负有心人 ,还是成功了. 所有资料和需要的语音模块的资料以放置在文章末尾, 有些是引用别人的博客的部分内容, 原文是在有道云笔记,所以没有图,请 ...
随机推荐
- [书摘]Windows内存管理术语
1. Virtual Address space 虚拟地址空间 一个应用程序能够访问的最大的内存地址空间, 32位的机器上面最大的就是4GB 但是 并不是所有的内存都放到主存里面, 可能放到pagef ...
- PHP + JS 实现大文件分割上传
服务器上传文件会有一定的限制.避免内存消耗过大影响性能,在 php.ini 配置文件中,有几个影响参数: upload_max_filesize = 2M //PHP最大能接受的文件大小 post_m ...
- Angular require(抄别的)
require参数的值可以用下面的前缀进行修饰,这会改变查找控制器时的行为:?如果在当前指令中没有找到所需要的控制器,会将null作为传给link函数的第四个参数.^如果添加了^前缀,指令会在上游的指 ...
- 关于RabbitMQ Queue Argument的简介
1.Message TTL message在队列queue中可以存活多长时间,以毫秒为单位:发布的消息在queue时间超过了你设定的时间就会被删除掉. channel.queueDeclare(&qu ...
- python之random函数
# random各种使用方法 import random # 随机生成[0.1)的浮点数 print("random():", random.random()) # 随机生成100 ...
- BZOJ1552[Cerc2007]robotic sort&BZOJ3506[Cqoi2014]排序机械臂——非旋转treap
题目描述 输入 输入共两行,第一行为一个整数N,N表示物品的个数,1<=N<=100000. 第二行为N个用空格隔开的正整数,表示N个物品最初排列的编号. 输出 输出共一行,N个用空格隔开 ...
- LightOJ - 1341 Aladdin and the Flying Carpet (算术基本定理)
题意: 就是....求a的所有大于b的因子有多少对 算术基本定理求 所有因子 阿欧...偷张图. 注意范围 就好 ..... 解析: 在1 -1012的范围内求大于b的所有a的因子的对数(有几对) ...
- day5 if else elif 判断语句
age_of_princal = 56 guess_age = int( input(">>:") ) '''伪代码,提供思路用 if guess_age == age ...
- c# 对象存cookie
下载并引用Newtonsoft.Json.dll 对象转json,然后存cookies string xxx= Newtonsoft.Json.JsonConvert.SerializeObject( ...
- 洛谷P2257 YY的GCD
今日份是数论 大概是..从小学奥数到渐渐毒瘤 那就简单列一下目录[大雾 同余 质数密度 唯一分解定理 互质 完全剩余系 简化剩余系 欧拉函数 逆元 斐蜀定理 阶(及其性质) 欧拉定理 费马小定理 原根 ...