`
linuxstuding
  • 浏览: 1229595 次
文章分类
社区版块
存档分类
最新评论

java调用dll

 
阅读更多
Jawin(Java/Win32)是一个免费的、开放源代码的体系结构,用于 Java 组件和通过 Windows COM 对象或 Windows DLL 来公开的组件之间的互操作。Jawin 允许 Java 应用程序调用任何基于 COM 或 DLL 的遗留代码,而不需要编写任何 JNI 代码。您的代码将能与诸如 Microsoft Office 套件等可编写脚本的应用程序交互,调用诸如 Microsoft 的基于 COM 的 XML 解析器和工具等可编写脚本的逻辑组件,以及访问诸如 Windows 注册表、安全 API 和事件日志等 Win32 API 特性。Jawin 包括一个用于可编写脚本的 COM 组件的代码生成器。该代码生成器读取类型库,并自动产生从 Java 应用程序调用该组件所需要的Java存根(stub)。
使用方法:
解压后,将bin/jawin.dll拷贝到System32目录下,然后将lib/jawin.jar和lib/jawin-stubs.jar拷贝到jdk的lib/ext目录下
好现在就可以运行其自带的demo了~

/* * HelloDll.java - * * This file is part of the Jawin Project: http://jawinproject.sourceforge.net/ * * Please consult the LICENSE file in the project root directory, * or at the project site before using this software. */ /* $Id: HelloDll.java,v 1.3 2004/06/14 20:16:38 arosii_moa Exp $ */ package demos; import org.jawin.COMException; import org.jawin.FuncPtr; import org.jawin.ReturnFlags; /** * Demo that uses the Win32 MessageBoxW API-method. * * @version $Revision: 1.3 $ * @author Stuart Halloway, http://www.relevancellc.com/halloway/weblog/ */ public class HelloDll { public static void main(String[] args) throws Exception { FuncPtr msgBox = null; try { msgBox = new FuncPtr("USER32.DLL", "MessageBoxW"); msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_FALSE); } catch (COMException e) { // handle exception e.printStackTrace(); throw e; } finally { if (msgBox != null) { try { msgBox.close(); } catch (COMException e) { // handle fatal exception e.printStackTrace(); throw e; } } } } }

注意运行是 要加demos.HelloDll
  1. /*1.指令字符串。一个"XXX:Y:ZZZ"格式的字符串。其含义分别是传入参数中的每个字节的数据类型意义、返回值的类型、需要从传入指针中读取的数据(inout类型参数)。比如:
  2. 函数签名intfunc(int,int,structs*,char*);//其中structs*调用完函数后需要读出,structs所占字节数为16。
  3. 其指令字符串为:IIP16G:I:L4L4n16L4。该字符串在解析返回值(字节数组)时,首先应该是返回类型I对应的4个字节,然后是inout类型的参数中n16对应的16个字节。
  4. 其中字符串的意义可以在Jawin提供的文件instructions.h中找到,或者在官方文档(Jawin数据指令)中找到常用的一些指令字符串的意义。
  5. 2.传入参数的总字节大小。
  6. 3.前面写好的传入参数的原始字节流。
  7. 4.一个object数组。
  8. 5.ReturnFlags,用以根据C/C++返回值将C/C++的错误转换为Java的异常并抛出。其中CHECK_NONE表示不检查;CHECK_FALSE和CHECK_WIN32分别表示返回0是FALSE和SUCCESS,根据是否出错决定是否抛出异常;CHECK_HRESULT表示使用COM模型中的HRESULT作为返回值,其错误码可以配置。
  9. */

原文地址 http://www.blog.edu.cn/user4/jjj250/archives/2007/1722308.shtml
分享到:
评论

相关推荐

    java调用dll方法总结

    本篇文章小编给大家整理了java调用dll的方法的总结,有需要的朋友参考学下一下吧。

    java调用dll最简单的方法

    在Java中调用DLL(Dynamic Link Library)文件,可以使用Java的本地方法接口(JNI,Java Native Interface)来实现。JNI允许Java程序与本地代码进行交互,从而实现跨平台的功能。

    Java调用dll

    用到的资源在压缩包里都有; 环境win7 64位 1.6jdk ;vs c++ 生成64位 dll jni 在C:\Program Files\Java\jdk1.6\include

    Java调用dll的JNA参考手册

    This document is the API specification for the JNA library for simplified native library access for Java.

    java调用DLL文件

    JAVA使用JNative包调用DLL文件

    JNA java调用dll

    java 调用dll 最简单的方式,完全不用开发c++代码,简单易用。

    java 调用dll

    java 调用dll In this tutorial, I will try to explain how to call native functions which are written in C or C++ from Java, using JNI.

    java调用dll详解.rar

    该资源详细介绍了java调用dll方法和里面需要注意的一下注意事项,希望这个资源能帮助到大家,大家共同学习进步!

    java调用dll接口

    java调用dll接口,备份供大家察看,谢谢大家共享。

    Java调用DLL源代码

    Java调用DLL源代码JNA和JNative

    Java调用dll实例

    Java调用dll实例,这里包含了jacob+jawin+jna+jnative方法在内的各种资源以及demo,有许多都是CSDN中的下载资源。由于本人也是新手,为了下载关于调用dll的相关资源消耗了大量积分,特此将手中资源进行汇总,为了方便...

    java调用DLL

    java调用DLL实例程序,使用的是开源JNative调用

Global site tag (gtag.js) - Google Analytics