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的核心思想是通过Java代理类来调用Windows API,这些代理类已经封装了与特定API函数对应的本地调用。开发者只需要了解Windows API的使用方式,就可以直接在Java代码中调用,大大降低了学习和使用的门槛。例如,...
jawin通过提供一套API,使得Java程序员可以直接调用Windows API,从而实现对硬件、操作系统服务以及系统资源的直接访问。 二、jawin-2.0-alpha1版本特性 jawin-2.0-alpha1是jawin项目的早期开发版本,虽然带有...
1. **添加Jawin库**:将Jawin库的JAR文件添加到Java项目的类路径中,以便在Java代码中使用Jawin API。 2. **定义接口**:根据DLL或COM组件的接口定义Java接口,这些接口将作为Java代码与DLL/COM组件交互的桥梁。 3...
在Java中,通过Jawin API加载C# DLL,然后就可以像调用本地Java库一样调用C#的函数。这涉及到JNI(Java Native Interface)和.NET Framework的交互。 4. **GSM协议解析DLL**: - 这个DLL可能是专门用来处理GSM...
JAWIN(Java for Windows)是一种用于Java应用程序的Windows本地接口库,它允许Java程序直接访问Windows API,从而实现更深层次的操作系统交互功能。JAWIN的核心优势在于其提供了一种高效且便捷的方式来调用Windows...
Jawin封装了JNI的一些复杂性,提供了更友好的API,使得开发者无需深入了解JNI的底层细节,就能方便地调用DLL中的函数。 Jawin.jar是Jawin项目的类库文件,包含了运行Java程序调用DLL所需的所有类和方法。在Java项目...
4. 文档:可能包含API文档或者用户指南,解释如何使用Jawin库以及调用Windows API的方法。 使用Jawin库的过程大致如下: 1. 引入Jawin库:在Java项目中添加jawin.jar和jawinjni.jar作为依赖,这样就可以在Java代码...
标题 "jawin操作word" 暗示了我们即将探讨的内容是关于使用Java与Windows API进行交互,以操作Microsoft Word文档。在这个场景下,开发者可能需要实现自动化处理Word文档、读写Word内容或者进行更复杂的格式操作。让...
JAWIN 是一个开源项目,它为Java提供了一种简单的方式来访问Windows API和DLL函数。它通过JNI(Java Native Interface)实现了这一目标,使得Java代码能够无缝地与C/C++编写的DLL函数进行通信。以下是一些关于使用...
1. **Java Native Interface (JNI)**:`jcom`和`jawin`都可能使用了JNI技术,这是一种让Java代码调用本地(操作系统特定)代码的机制。通过JNI,Java应用程序可以调用C/C++编写的COM接口。 2. **COM组件理解**:...
1. **利用Windows API**:例如,Java程序可以使用Jawin调用Windows的API函数,实现屏幕截图、文件操作等系统级功能。 2. **集成ActiveX控件**:Java应用可以与ActiveX控件交互,如播放视频、处理Excel文档等。 3. **...
- `jawin.jar`:这是Java库,包含了Java接口,使得Java开发者可以方便地调用Jawin的API。 - `jawin-stubs.jar`:包含了预定义的DLL和COM组件接口,简化了开发者的工作。 5. **使用Jawin处理Word和Excel**: 使用...
jawin是一个开源项目,旨在提供一种简单的方式来调用Java代码中的Windows API,使Java应用程序能够充分利用Windows平台的功能。 在描述中提到的“看到很多在找,上传一下帮助一下大家。我也找的很辛苦哦”,这表明...
Jawin是一个Java库,它提供了与Windows API的接口,使得Java程序能够调用Windows系统中的应用程序,例如Microsoft Word。通过这个库,我们可以控制Word运行并执行转换操作,将DOC或DOCX文件转换为HTML。 以下是使用...
Jawin是一个Java接口,它允许Java应用程序调用Windows API,从而能够操作Microsoft Office应用程序,如Word。Jacob(Java COM Bridge)则是一个Java到COM(Component Object Model)桥接器,它同样提供了与Office...
2. **注册COM组件**:在Java中,你需要使用Jawin提供的API来注册COM组件,这样Java就能识别和访问这些组件。 3. **创建COM对象**:通过Jawin的接口,你可以创建COM组件的实例,就像创建一个Java对象一样。 4. **...
JAWIN封装了JNI的复杂性,为开发者提供了一个简单易用的API,使得Java程序员无需深入理解JNI的底层细节,就能方便地调用Windows DLL中的函数。 JCOB(Java COM Bridge)也是一个用于Java与COM组件交互的库,它可以...
而Jawin则简化了这一过程,它允许Java代码通过简单的API调用DLL函数。例如,你可以直接在Java中引用DLL中的函数,就像调用普通的Java方法一样,减少了编码工作量和出错的可能性。 2. **Java与COM互操作**:COM是...
2. **注册DLL或COM组件**:使用Jawin提供的API注册要使用的DLL或COM组件。 3. **定义接口**:根据DLL函数或COM方法的原型,定义对应的Java接口。 4. **调用函数**:通过Java接口调用DLL函数或COM方法,Jawin会自动...