程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中如何調用DLL方法

java中如何調用DLL方法

編輯:關於JAVA

前段時間項目需要使用調用DLL來控制POS機外設,如錢箱和小票打印機、顧客顯示屏等,於是,我便開始了java調用DLL中的方法的探索,事實上,網上的例子還是很多的,一些外部包的例子也有很多,但每個人的實際情況都有所不同,盡管只是一個很簡單的調用,也花了我不少時間,在這裡分享一下我的經驗吧。

我是通過一個外部的JAR包來間接來獲得DLL文件的句柄 的,它就是jacob了,這是java com brige的簡寫,呵呵, 這個名稱起得非常形象吧,我用的版本是jacob 1.9的,你可以到它的官方網站去下載,下載回來的壓縮包中會有兩個文件我們需要用到的,一個是jacob.dll,一個是jacob.jar,jacob.dll可以將它復制到系統的system32目錄下,而jacob.jar文件,直接將它加入到項目的庫中就可以了。這兩項准備工作完成後,就可以開始嘗試調用了。

新建一個類,引入jacob.jar中的兩個類,

import  com.jacob.activeX.ActiveXComponent;  
import  com.jacob.com.Dispatch;

然後通過dll的ControllerId來讀取DLL文件

public class Print {  
    private ActiveXComponent printController = null;  
    private Dispatch printObj = null;  
    /** 
     * 默認controllerId的方法 
     */
    public Print(){  
        try{  
            printController = new ActiveXComponent("POSControler.Controler");  
            printObj = (Dispatch)printController.getObject();  
        }catch(Exception e){  
            printObj = new Dispatch();  
            //Common.alert(e.getMessage(),"讀取終端控制DLL失敗");  
        }  
    }  
}

這樣就可以獲得DLL文件的句柄了,那怎樣調用裡面的方法呢?

如果方法dll中的方法是空參數時,直接call一下就可以了,如

Dispatch.call(printObj,"setDefaultFont");

而調用有參數的方法時,則需要將參數在後面依次傳入,注意按順序噢:

Dispatch.call(printObj,"show",value,type);

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved