解压JNative-1.3.2.zip 获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。JNativeCpp.dll Windows下用的,拷到windows / system32目录下; libJNativeCpp.so Linux下使用的;% J" o, A6 T% M: R& M8 |
JNative.jar 这是一个扩展包,加载到你的程序中就可以。) w3 W% X6 W# _" I0 T4 L6 k5 J1 ~
一个简单例子/ U7 a+ ?. {5 T# t
import org.xvolks.jnative.JNative;
- w2 ^* W9 ]- d# G4 J0 [ import org.xvolks.jnative.Type;7 h/ h* ? p, R9 k/ h2 M
import org.xvolks.jnative.exceptions.NativeException;, z, E* {9 L; v2 n
public class JNativeTest {1 T9 w+ H& ~ e0 r/ m
public static final int messageBox(int parentHandle, String message,/ N5 X/ ~6 S9 \+ F. [- C& P1 R1 b
String caption, int buttons){// throws NativeException, IllegalAccessException {, _1 X/ _5 p' t' U" `4 G
JNative n = null;
3 V$ @9 O! r) U try {
+ C5 h7 e0 o* H1 x n = new JNative("User32.dll", "MessageBoxA"); //“.dll”不用也可以, 常量DLL_NAME的值为User32.dll$ \1 I, I, {/ z' _ N
// 构造JNative时完成装载User32.dll,并且定位MessageBoxA方法) q0 Y1 D" K9 s3 N+ U v0 M; a h
n.setRetVal(Type.INT); // 指定返回参数的类型 a* e0 j" ~+ c1 d4 I2 ^* Y
int i = 0;
0 j' O9 E) n! n9 y0 B n.setParameter(i++, Type.INT, "" + parentHandle);
& ?, K$ }% U2 ^9 G9 ^ n.setParameter(i++, Type.STRING, message);" T( i0 \9 g6 }% C) C
n.setParameter(i++, Type.STRING, caption);( s9 W `- n$ |8 ~3 f# \/ s
n.setParameter(i++, Type.INT, "" + buttons); // 指定位置上的参数类型和值
7 o) A; T. ?' z# F) z3 e n.invoke(); // 调用方法
7 i4 g7 Y9 s/ ^, t) P1 H return Integer.parseInt(n.getRetVal());
; `# _0 l k. W4 F$ [" s. ~- C; { }" @* H4 u3 i: w. C) A
catch(Exception ex){
! h& J, n& L- T& i/ x ex.printStackTrace();
% r; v Y9 C) M }
6 E, y; u- N1 |0 \/ ], Z" b finally {
0 T& f& K a* Z if (n != null)4 S! g( K, H3 A) V$ z( K+ F' c& J) [1 p+ r' x
try {
6 M' {( O) ~5 A! I* o7 t n.dispose();
x" y) c, q. I6 L: r } catch (NativeException e) {
, W- E5 x( J6 `( R! u, J$ Y4 U5 O // TODO Auto-generated catch block
) m) r$ v. l6 L* j6 c# o e.printStackTrace();
1 B1 x, g& u3 z/ j ^ { } catch (IllegalAccessException e) { k! `8 G9 P+ T
// TODO Auto-generated catch block) @$ T* L& l& X0 ]& g" l: U
e.printStackTrace();* ?$ ~6 E# v% y- y$ N
} // 记得释放! @! _$ D6 Q' W% Y0 N
}( o9 ?& D2 P; E' p4 Q5 |% N+ E
return 0;- S9 C6 {, q$ g' Q& @% o: Z
}: R+ x) J% Z0 O& p3 C3 ?
public static void main(String[] args) throws NativeException, IllegalAccessException{, A& m1 T6 a' e4 a; ]
JNativeTest.messageBox(100,"这是使用jnative练习", "jnativetest", 1);! A- A4 J, t8 Z
}
$ c. m P* V) G% V7 @# B' |+ E$ R4 U) _- A. {$ P9 H3 G4 Y
} |