安裝好要調用的ocx驅動,並通過注冊表查詢其對應的clsid。
下載jacob-1.18解壓,將jacob-1.18-x86.dll文件復制到D:\Program Files (x86)\Java\jdk1.8.0_101-32\jre\bin目錄。
經測試發現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")); }