Java 通过 jacob调用OCX控件

安装好要调用的ocx驱动,并通过注册表查询其对应的clsid。

下载jacob-1.18解压,将jacob-1.18-x86.dll文件复制到D:Program Files (x86)Javajdk1.8.0_101-32jrein目录。

经测试发现jdk64位会有问题,在这里使用32位进行测试。

例1:调用不带参数的函数

(1)控件中的函数描述

Public Sub CheckKey()

功能:检测USBKEY是否已插入。

输入:无

输出:

    ErrCode:        0:KEY已插好; 非0:KEY未插好。

    ErrMsg:         提示信息。

(2)调用方法

public static void main(String[] args) {
        ActiveXComponent com = new ActiveXComponent("CLSID:xxx") ;
        Dispatch disp = com.getObject();
        
        Dispatch.callSub(disp, "CheckKey");
        
        System.out.println(Dispatch.get(disp, "ErrCode"));
        System.out.println(Dispatch.get(disp, "ErrMsg"));
        
    }

例2:调用带参数的方法

(1)控件中的函数描述

Public Sub OpenDeviceEx(String strPassword)
功能:打开密码设备(USBKEY)。
输入:
strPassword        打开加密设备需要的口令字,如缺省,则不验证口令。
输出:
errCode            错误码,成功时为0,其它为错误。
errMsg            错误信息。

(2)调用方法

public static void main(String[] args) {
        ActiveXComponent com = new ActiveXComponent("CLSID:XXXX") ;
        Dispatch disp = com.getObject();
        
        String strPassword = "xxxxx";
        Dispatch.callSub(disp, "OpenDeviceEx", new Variant(strPassword));
        
        System.out.println(Dispatch.get(disp, "ErrCode"));
        System.out.println(Dispatch.get(disp, "ErrMsg"));
        
    }
原文地址:https://www.cnblogs.com/yshyee/p/7883498.html