java 呼叫windows的COM元件舉例(使用JACOB)
阿新 • • 發佈:2019-02-17
最近公司需要做一個效果,開發一個程式能在程式執行時開啟microsoft office的相關軟體,實時寫入,然後能關閉,你能看到資料寫入的效果。如下圖:
下面是一個java呼叫的小例子,效果是彈出一個訊息視窗。
需要引入的包如下:
主程式: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程式了,執行結果是:如圖:
今天就先寫到這裡,其中對於jacob還不是特別屬性,正在逐步的學習中,歡迎大神踩我。扔板磚。(^__^) 嘻嘻