1. 程式人生 > >java 呼叫windows的COM元件舉例(使用JACOB)

java 呼叫windows的COM元件舉例(使用JACOB)

最近公司需要做一個效果,開發一個程式能在程式執行時開啟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還不是特別屬性,正在逐步的學習中,歡迎大神踩我。扔板磚。(^__^) 嘻嘻