利用jawin完成調(diào)用window中dll的調(diào)用
最近由于項(xiàng)目的特殊需求,我們必須在程序調(diào)用window的dll。
開(kāi)始我們用jni,后來(lái)由于調(diào)用的dll太多,而且很煩瑣。所以,我們決定用開(kāi)源的jawin調(diào)用。
jawin 可以對(duì)dll中的方法進(jìn)行調(diào)用,也可以調(diào)用com中的方法.內(nèi)部還提供了一個(gè)工具,直接對(duì) com組件導(dǎo)出成 java的類(lèi),個(gè)人認(rèn)為很方便。
下面是我們作的一個(gè)測(cè)試,很順利便通過(guò)了。
1、下載jawin:http://jawinproject.sourceforge.net/。
2、配置:
》將jawin.jar放于%JAVA_HOME%\jre\lib\ext下 。
》將jawin.dll放于c:\winnt\system32下。否則將出現(xiàn)錯(cuò)誤:COMException : no jawin in java.library.path;
也可將jawin.dll放于每個(gè)項(xiàng)目目錄下。
》至此在Editplus中調(diào)試Jawin/NJawin的例子,可以通過(guò)。 而在Eclipse中有時(shí)還會(huì)出上面的錯(cuò)誤:COMException : no jawin in java.library.path。
》在Eclipse中,菜單->window->preference->Java->installed JREs 將原來(lái)的remove,重新建一個(gè)指到你的java sdk目錄。
》 ok了。
3、程序測(cè)試:
》調(diào)用 dll,dll 的方式不需要導(dǎo)出了,直接調(diào)用就可以了,下面是下載的包中提供的一個(gè)例子:
》我在win2000下,測(cè)試通過(guò)。
/*
* Created on Dec 22, 2005
*
*/
import org.jawin.FuncPtr;
import org.jawin.ReturnFlags;
/**
* @author gf mail to gf@163.com
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GfJawinTest {
public static void main(String[] args) {
try {
FuncPtr msgBox = new FuncPtr("USER32.DLL", "MessageBoxW");
msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_NONE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
posted on 2005-12-22 11:23 風(fēng) 閱讀(8486) 評(píng)論(0) 編輯 收藏