`

jawin 学习一

 
阅读更多
【转】java jawin api 中文 invoke方法
2009-09-14 0:42

jawin api

关键字: jawin
org.jawin
Class FuncPtr
java.lang.Object
org.jawin.FuncPtr

--------------------------------------------------------------------------------

public final class FuncPtr
extends java.lang.Object
这个是用来调用标准DLL的类
Class for working with a reference to a single Win32 function exposed in standard DLL's. The Jawin Userguide - Calling a DLL Entry Point
这个文档可以当作如何使用JAWIN的参考
document should be consulted about how to use this class.

包括了一些常用的函数的调用方法
Contains several invoke_*-methods for some standard function signatures.
可以大概分成一下三种
These falls in three groups:

invoke_I- 一些以INT做为标准返回的本地方法的调用函数
methods for native methods with a standard int as [retval]
invoke_OI-一些最后参数作为[out]返回的本地方法的调用函数

methods for native methods with a last parameter being a [out] int
invoke_S-一些返回数组的本地方法的调用函数(也可以被使用那些返回为STRUCTS的方法)
methods for native methods returning a byte array (can be used for methods returning structs)
Please notice that because of the TYPEDEF in C/C++ many method signatures are covered by the relatively few invoke_*-methods, as eg. HWND, HRESULT, LONG etc. all can be represented as Java int's.
请注意C/C++的返回信息的类型和JAVA不同,但是有一些类型可以用java的一些类型代替
比图 HWND,HRRSULT LONG等等 这些都能被表示成为java的int
If working with a function that does not match one of the standard signatures, use the generic invoke(String, int, NakedByteStream, Object[], ReturnFlags).
如果使用的一些函数不能和标准的调用方法不匹配,请使用标准的调用方法


Version:
版本 1.3
$Revision: 1.3 $
Author:
作者:
Stuart Halloway, http://www.relevancellc.com/halloway/weblog/
Morten Andersen, arosii_moa (at) users.sourceforge.net
See Also:
例子:
The Jawin Userguide - Calling a DLL Entry Point

--------------------------------------------------------------------------------

Constructor Summary构造器描述
FuncPtr(java.lang.String dll, java.lang.String name)
           
? Method Summary
void close()
          Call to "free" the function pointer. 释放函数指针
boolean equals(java.lang.Object o)
           
protected void finalize()
          backup for releasing resources, by calling close().备份被释放的资源
int getPeer()
           
int hashCode()
           
int invoke_I(byte[] arg0, ReturnFlags flags)
调用需要一个数组指针作为参数的本地方法,返回整形变量
          for calling native methods taking one pointer to a byte array, and returning an int.
int invoke_I(int arg0, int arg1, int arg2, int arg3, ReturnFlags flags)
返回需要四个整形变量作为参数的本 地方法,返回一个整形变量
          for calling native methods taking four int args, and returning an int.
int invoke_I(int arg0, int arg1, ReturnFlags flags)
调用以两个整形变量作为参数的本地方法,返回一个整形变量
          for calling native methods taking two int args, and returning an int.
int invoke_I(int arg0, ReturnFlags flags)
调用以一个整形变量作为参数的本地方法,返回一个整形变量
          for calling native methods taking one int arg, and returning an int.
int invoke_I(int arg0, java.lang.String arg1, ReturnFlags flags)
调用以一个整形变量和以个字符串变量为参数的本地方法,返回一个整形变量
          for calling native methods taking one int and one String args, and returning an int.
int invoke_I(int arg0, java.lang.String arg1, java.lang.String arg2, int arg3, ReturnFlags flags)

调用以一个整形变量和两个字符串变量和一个整形变量作为参数的本地方法,返回一个整形变量(使用MessageBoxWDEMO的例子)
          for calling native methods taking one int, two String and one int args, and returning an int (used for MessageBoxW).

int invoke_I(ReturnFlags flags)
调用没有变量的本地方法,返回一个整形变量
          for calling native methods taking no args, and returning an int.
int invoke_I(java.lang.String arg0, ReturnFlags flags)
调用以一个字符串作为参数的本地方法,返回一个整形变量
          for calling native methods taking one String arg, and returning an int.
int invoke_I(java.lang.String arg0, java.lang.String arg1, ReturnFlags flags)
调用以两个字符串变量的本地方法,返回一个整形变量
          for calling native methods taking two String args, and returning an int.
int invoke_OI(int arg0, int arg1, int arg2, int arg3, ReturnFlags flags)
调用以五个整形变量,其中前面四个作为[IN]参数,最后一个作为[OUT]变量的本地方法
          for calling native methods taking five int args, where the first four are standard [in] parameters and the last int is a [out] parameter.
int invoke_OI(int arg0, ReturnFlags flags)
调用以两个整形变量,其中最后个整形变量作为[OUT]变量 作为参数的本地方法,
          for calling native methods taking two int args, where the last int is a [out] parameter.
int invoke_OI(int arg0, java.lang.String arg1, ReturnFlags flags)
调用以一个整形变量作为[IN]参数,一个字符串类型作为[OUT]参数的本地方法,返回一个整形
          for calling native methods taking one [in] int, one [in] String and one [out] int arg.
byte[] invoke_S(byte[] arg0, int arg1, int returnSize, ReturnFlags flags)
调用以一个数组指针一个整形变量作为参数的本地方法,返回一个制定大小的BYTE数组
          for calling native methods taking one pointer to a byte array and one int args, and returning a byte array of a specified size.
byte[] invoke_S(byte[] arg0, int returnSize, ReturnFlags flags)
调用以一个数组指针作为参数的本地方法,返回一个指定大小的byte数组
          for calling native methods taking one pointer to a byte array, and returning a byte array of a specified size.
byte[] invoke_S(int arg0, int returnSize, ReturnFlags flags)
调用以一个整形变量作为参数的本地方法,返回一个指定大小的BYTE数组(一般用于返回以个已知大小的STRUCT的情况)
          for calling native methods taking one int arg, and returning a byte array of a specified size (typically used when calling methods returning a struct with a known byte-size).
byte[] invoke(java.lang.String instructions, int stackSize, int argStreamSize, byte[] argStream, java.lang.Object[] objectArgs, ReturnFlags flags)
调用那些不匹配invoke_*调用方法的本地方法
          generic method for calling native methods that do not match any of the invoke_* methods.
byte[] invoke(java.lang.String instructions, int stackSize, NakedByteStream argStream, java.lang.Object[] objectArgs, ReturnFlags flags)
一种调用使用了NakedByteStream构造输入参数流的invoke(String, int, int, byte[], Object[], ReturnFlags) 的快捷方法
          shortcut method for calling invoke(String, int, int, byte[], Object[], ReturnFlags) when using a NakedByteStream for building the argStream-bytes.
java.lang.String toString()


Methods inherited from class java.lang.Object这些方法继承了ava.lang.Object
clone, getClass, notify, notifyAll, wait, wait, wait
?

Constructor Detail


FuncPtr
public FuncPtr(java.lang.String dll,
              java.lang.String name)
        throws COMExceptionParameters:
参数:
dll - DLL动态库的名称(可以是只有名字的DLL动态库或者是完全地址的名字DLL动态库,注释,文件的后缀不是一定需要的准确的参数语法可以再MSDN文档库里找到
the name of a DLL (can be either just the name of the DLL or a full path - use backslashes (\)). Note, that the name is not case sensitive and that the ".dll"-part is optional. The exact syntax for the parameter can be found in the MSDN documentation for LoadLibrary.
name - DLL动态库中可被见的本地方法
the function name exposed in the DLL.
Throws:
COMException - 当不能连接到DLL动态库或者找不到方法会发出错误
if unable to load the DLL or find the function.
java.lang.NullPointerException - 当DLL动态库的名字是空会发出的错误
if either dll or name is null.

 

分享到:
评论

相关推荐

    jawin使用步骤.txt

    Jawin 是一个 Java 绑定库,用于调用 Windows 的本地 DLL 文件,使得在 Java 应用程序中可以利用到原生 Windows 功能。本文将根据给定的“jawin使用步骤.txt”文件,详细介绍如何在 Java 环境下配置并使用 Jawin。 ...

    java实例,通过jawin实现对dll中方法的调用

    在Java中,我们通常使用Java Native Interface (JNI) 来调用本地方法,但JNI的学习曲线较陡峭,而jawin则提供了一个更简单的解决方案。jawin将DLL中的函数封装为Java的静态方法,开发者可以通过这些静态方法直接调用...

    jawin jar包

    Java和Windows交互神器——Jawin Jar包详解 在Java编程世界中,有时我们需要与Windows系统进行深度交互,比如调用系统API、控制硬件...通过学习和使用Jawin库,开发者可以更高效地解决那些需要底层系统支持的问题。

    JAWIN(Java调用Win API)

    1. 引入JAWIN库:将JAWIN的jar文件添加到项目的类路径中。 2. 查阅JAWIN文档:了解哪些Windows API功能已经被封装为Java方法。 3. 直接调用:在Java代码中,通过JAWIN的类和方法调用相应的Windows API。 通过JAWIN...

    jawin操作word

    1. **配置jawin**:在项目中引入jawin库,确保所有必要的DLL文件被正确地放置和加载,以便Java能够调用Windows API。 2. **启动Word**:使用jawin调用`CoCreateInstance`函数创建一个COM对象,该对象代表一个运行中...

    jcom 、jawin资源包下载

    1. **Java Native Interface (JNI)**:`jcom`和`jawin`都可能使用了JNI技术,这是一种让Java代码调用本地(操作系统特定)代码的机制。通过JNI,Java应用程序可以调用C/C++编写的COM接口。 2. **COM组件理解**:...

    jawin-2.0-alpha1-src源文件

    jawin-2.0-alpha1-src是一个开源项目,它的核心目标是将Java语言与Windows API深度整合,为开发者提供一个在Windows平台上使用Java进行系统级编程的解决方案。这个源文件包包含了项目的全部源代码,允许开发者深入...

    Java和DLL(COM)互操作 Jawin

    Java和DLL(COM)互操作是跨平台编程中的一个重要主题,特别是在需要将Java应用程序与已有的Windows系统组件(如DLLs和COM对象...通过学习和熟练掌握Jawin,开发者可以更高效地集成现有的Windows基础设施,提升开发效率。

    java调用dll/com组件word excel使用jawin架包

    1. **Java Native Interface (JNI)**: JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。当Java程序需要调用C/C++编写的本地库(如DLL文件)或者使用特定硬件功能时,就会用到JNI。通过JNI,...

    基于java的开发源码-和DLL(COM)互操作 Jawin.zip

    4. **示例应用**:例如,如果有一个DLL文件包含了一个计算圆面积的函数,开发者可以使用Jawin创建一个Java接口,通过JNI调用DLL中的函数,实现Java代码计算圆面积的功能。对于COM组件,如Microsoft Office的自动化...

    jawin测试demo

    1. **jawin框架**:Java调用Windows DLL的工具,它提供了一种在Java中直接调用Windows API的方法,使得Java开发者可以利用Windows系统的特性和功能。 2. **DLL调用**:理解DLL的工作原理和调用规范,如函数签名、...

    Java和DLL(COM)互操作 Jawin.7z

    2. **示例和教程**:可能包含了一些示例代码,展示了如何使用Jawin库进行实际的DLL和COM调用,这对于初学者理解和学习如何应用Jawin非常有帮助。 3. **文档**:可能包括了用户手册、API文档或者开发者指南,解释了...

    java源码:Java和DLL(COM)互操作 Jawin.zip

    1. **引入Jawin库**:首先需要将Jawin库加入到Java项目中,这通常通过添加JAR文件到项目的类路径中完成。 2. **注册COM组件**:在Java中,你需要使用Jawin提供的API来注册COM组件,这样Java就能识别和访问这些组件...

    基于Java的实例源码-和DLL(COM)互操作 Jawin.zip

    1. **Java与DLL互操作**:在Java中直接调用DLL函数通常需要使用JNI(Java Native Interface),这是一个复杂的接口,需要编写C/C++的本地代码。而Jawin则简化了这一过程,它允许Java代码通过简单的API调用DLL函数。...

    java 调用DLL 学习笔记

    本学习笔记将深入探讨三种主要的Java调用DLL的方法:JNI(Java Native Interface)、JACOB(Java COM Bridge)以及JAWIN,并介绍一些实用的DLL查看工具。 1. **JNI(Java Native Interface)**: JNI是Java平台的...

    Java和DLL(COM)互操作 Jawin源码

    通过学习和研究Jawin,开发者不仅可以掌握JNI和COM的基础知识,还能提升解决复杂跨平台问题的能力。在实际项目中,Jawin可以用于调用已有的Windows服务,如数据库驱动、图形处理库或其他系统级功能,极大地扩展了...

    JNI 框架jar 包_JNA_jacob_jwain_jnative

    `jawin.jar`和`jawin-stubs.jar`可能与jwain有关,`jawin.jar`可能是jawin库本身,而`jawin-stubs.jar`可能包含了与本地库交互的接口定义。 总的来说,这个压缩包包含了一系列用于Java与本地代码交互的库,特别是...

    java调用大漠插件的开源项目,使用njawin插件调用com组件,目前还在研究java 如何免注册调用com组件.zip

    软件开发设计:应用软件开发、系统...云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    java 使用windows api操作 office等的源码

    这个源码包“jawin-2.0-alpha1-src”可能包含了实现这一目标的类库和示例代码。下面我们将深入探讨相关知识点。 1. **Java Native Access (JNA)**: JNA是Java平台上的一个开源库,它允许Java代码直接调用本机库(如...

    ICTCLAS的Java分词系统

    1. `ICTCLAS.dll`:这是一个动态链接库文件,通常用于Windows环境,包含ICTCLAS的底层实现,可能用C++或类似语言编写,Java通过JNI(Java Native Interface)调用这些底层函数。 2. `SplitWord.html`:这可能是一个...

Global site tag (gtag.js) - Google Analytics