鹰翔宇空

学习和生活

BlogJava 首页 新随笔 联系 聚合 管理
  110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

转自风之语http://www.blogjava.net/gf7/archive/2005/12/22/25041.html

最近由于项目的特殊需求,我们必须在程序调用window的dll。
开始我们用jni,后来由于调用的dll太多,而且很烦琐。所以,我们决定用开源的jawin调用。
jawin 可以对dll中的方法进行调用,也可以调用com中的方法.内部还提供了一个工具,直接对 com组件导出成 java的类,个人认为很方便。

下面是我们作的一个测试,很顺利便通过了。
1、下载jawin:http://jawinproject.sourceforge.net/
2、配置:
    》将jawin.jar放于%JAVA_HOME%\jre\lib\ext下 。
    》将jawin.dll放于c:\winnt\system32下。否则将出现错误:COMException : no jawin in java.library.path;
    也可将jawin.dll放于每个项目目录下。

   》至此在Editplus中调试Jawin/NJawin的例子,可以通过。 而在Eclipse中有时还会出上面的错误:COMException : no jawin in java.library.path。
   》在Eclipse中,菜单->window->preference->Java->installed JREs 将原来的remove,重新建一个指到你的java sdk目录。
   》 ok了。
3、程序测试:

     》调用 dll,dll 的方式不需要导出了,直接调用就可以了,下面是下载的包中提供的一个例子:
     》我在win2000下,测试通过。
/*
* 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 2006-05-30 11:24 TrampEagle 阅读(842) 评论(1)  编辑  收藏 所属分类: java

Feedback

# re: 利用jawin完成调用window中dll的调用 2008-09-03 16:48 啊啊啊
别的dll怎么调还是不懂  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: