转 java调用com组件方法

来源:互联网 发布:怎么安装解压软件 编辑:程序博客网 时间:2024/06/01 10:44

 

对照vb代码实现java调用com组件方法

2009-03-02 14:39

1.简介

java调用com组件方法,最简单的方法莫过于使用jacob控件。

jacob就是 java-com bridge的缩写,提供自动化的访问com的功能,也是通过jni功能访问windows平台下的com组件或者win32系统库的。这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献。最好的支持地点:http://groups.yahoo.com/group/jacob-project

jacob下载地址:

http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368

      jacob的安装非常的简单,我们解开下载的jacob_1.9.zip,在文件夹中找到jacob.dll和jacob.jar两个文件。jacob直接放到系统的system32文件夹下就行了,连注册都不用的(或者拷贝到jdk或者jre的bin目录下也行,当前测试文件所在的目录也行,就是只要在java.library.path中就可以)。而jacob.jar设置到classpath中去就可以了,或者在ide开发环境的工程中设置扩展库也一样的。

2.对照vb的代码

举例:发送一个普通的消息到办公平台大蚂蚁

    dim session, msg,logininfo

    set msg    = createobject("antcom.antmsg")

    set session = createobject("antcom.antsyncsession")

    set logininfo   = createobject("antcom.antlogininfo")

    msg.subject = "start"      '消息的标题

    msg.content = "hi, im admin"    '消息的内容

    msg.addreceiver "user" , ""     '消息接收者,如果要发给多个人可以从次调'用 addreceiver

   msg.contenttype = "text/text"    '消息内容的格式

    logininfo.server = "127.0.0.1"    'bigant 的服务器地址

   logininfo.serverport = 6080     'bigant 的服务端口

   logininfo.loginname = "admin"    '消息发送者的 loginname

    logininfo.password = ""     '消息发送者的 password

    session.login logininfo      '登录

    session.sendmsg msg, 0

3.分析

   由上vb代码可以看出,分三步操作。首先利用createobject("antcom.antmsg")初始化activex对象,然后设置各对象的属性值,例如msg.content = "hi, im admin",最后再调用对象的方法session.sendmsg msg, 0。很简单,设置属性值就是那种带=号的语句,不带=号就是方法操作。

4.对应java代码

我们也分三步走。第一步,创建activex对象,在创建之前引入 com.jacob.activex.*; com.jacob.com.*;二个包。然后再创建对象activexcomponent smsg = new activexcomponent("antcom.antmsg");在java中,多有一步,必须dispatch msg = smsg.getobject();处理才能真正得到该activex对象,才能对它进行操作。

第二步,设置对象属性。对应3中的举例msg.content = "hi, im admin",对应的java语句就是dispatch.put(msg,"content","hi,i'm admin")。

第三步,调用对象方法。对应3中的举例session.sendmsg msg, 0,对应的java语句就是dispatch.call(ses, "sendmsg",msg,0);

5.完整的代码。上面2中举例的所有vb代码,转成java就是:

package test;

import com.jacob.activex.*;

import com.jacob.com.*;

public class test {

public static void main(string[] args){

   activexcomponent smsg = new activexcomponent("antcom.antmsg");

   activexcomponent sses = new activexcomponent("antcom.antsyncsession");

   activexcomponent sinfo = new activexcomponent("antcom.antlogininfo");

   dispatch msg = smsg.getobject();

   dispatch.put(msg,"subject","start");

   dispatch.put(msg,"content","hi,i'm administrator");

   dispatch.call(msg,"addreceiver", "user","");

   dispatch.put(msg,"contenttype","text/text");

   dispatch info = sinfo.getobject();

   dispatch.put(info,"server","127.0.0.1");

   dispatch.put(info,"serverport",6080);

   dispatch.put(info,"loginname","admin");

   dispatch.put(info,"password","");

   dispatch ses = sses.getobject();

   dispatch.call(ses, "login",info);

   dispatch.call(ses, "sendmsg",msg,0);  

}

}

呵呵。到这里就全部ok了。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/