wugaokai 发表于 2013-2-1 12:01:02

Jinvoke

--------------------------------------------Java Call Win32 API-----------------------------------------
下载地址:http://www.jinvoke.com/calling-the-win32-api-from-java
 
简单的例子:
 
import com.jinvoke.JInvoke;import com.jinvoke.NativeImport;public class HelloWindows {@NativeImport(library="User32",function="MessageBox")public static native int showMessage(int hwnd,String text,String caption,int type);public static void main(String[] args){JInvoke.initialize();showMessage(0,"Hello welcome","hello-world",0);}} 
 
注解方式有三种:
1@NativeImport连接上本地DLL,调用DLL内的方法
2@NativeStructrepresent a native structure (a C struct) as a Java class.
3@Embeddeddefine fixed-size strings and arrays in structs.
 
--------------------------------@NativeStruct例子--------------------------------------------------
Struct C :
 
typedef struct _SYSTEMTIME {WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds;} SYSTEMTIME, *PSYSTEMTIME; 
 java.class:
 
@NativeStructpublic class SYSTEMTIME {public short wYear;public short wMonth;public short wDayOfWeek;public short wDay;public short wHour;public short wMinute;public short wSecond;public short wMilliseconds;} 
-------------------------------------@Embedded例子------------------------------------------------------
Struct C:
 
typedef struct _SHFILEINFO {HICON hIcon;int iIcon;DWORD dwAttributes;TCHAR szDisplayName;TCHAR szTypeName;} SHFILEINFO; java.class
 
@NativeStructpublic class ShFileInfo {public int hIcon;public int iIcon;public int dwAttributes;@Embedded(length=260)public StringBuffer szDisplayName = new StringBuffer(260);@Embedded(length=80)public StringBuffer szTypeName = new StringBuffer(80);}  
 
页: [1]
查看完整版本: Jinvoke