通過Java調用OCX控件或者DLL有以下幾種方法,使用JNI、JACOB、Jawin等技術完成接口調用;
1.JNI
最直接的方式,也是最麻煩的方式,需要自己完成所有的工作,不推薦。
2.Jawin
嘗試了一下,效果不錯,但相對來說,其編程風格更貼近Windows,離Java有點遠
3.Jacob
使用Jacob非常方便,Java編程風格,需要了解的知識比較少。官方的解釋是Java COM Bridge,即java和
com組件間的橋樑(進一步瞭解com/dcom: http://docs.huihoo.com/com/)
com一般表現爲dll或exe等二進制文件
下載地址: http://sourceforge.net/projects/jacob-project/ JACOB。e
Jacob的使用方法(64位的jacob組件對應 64爲的OCX控件或者DLL文件)
1、將jacob.jar導入到開發項目(開發項目爲需要引用的dll接口的項目)中,導入方法如下https://blog.csdn.net/zxz9900/article/details/99598807;
2、將jacob-1.xx-x64.dll放到 C:\Windows\System32文件夾下(注意:該dll必須與jacob.jar版本一致);
3、註冊DLL文件,regsvr32 D:\Code\EncryptionLibrary64.dll;
如果註冊失敗,提示沒有入口的錯誤,請進行如下操作:
開始→所有程序→附件→右鍵點擊命令提示符(CMD)→以管理員身份運行。
在DOS窗口中輸入 regsvr32 msi.dll,提示成功,然後再執行 regsvr32 xx.dll
鍵盤操作win+r彈出運行框,輸入 regedit 查看註冊表;
注意:如果部分電腦不能註冊,或者註冊失敗,可手動進行如下操作,鍵盤操作win+r彈出運行框,輸入 regedit 查看註冊表,選中“計算機”根節點,選中“文件”菜單中的【導入】,導入dll的註冊文件(共兩個註冊文件,ProgId.reg與CLSID.reg),,導入完成後請查詢“EncryptionLibrary64.EncryptionLibraryCom”,並修改註冊文件中“InprocServer32”與“1.0.0.0”中“CodeBase”參數中“EncryptionLibrary64.dll”的相關路徑(修改爲dll文件在本地的路徑);
1.初始化
ComThread.InitMTA(true);
ActiveXComponent com = new ActiveXComponent("組件的ProgID") ;
Dispatch disp = com.getObject();
2.調用控件裏面的方面
2.1調用無參的方法,並返回一個short值
Dispatch.call(disp, "Init").getShort();
2.2調用有一個參數的方法,並返回一個boolean值
Dispatch.call(disp,"Method",new Variant(args)).getBoolean();
調用多個參數依次類推,注意在傳遞參數前,將Java中的參數轉換成Variant。