JNA調(diào)用window api中的MessageBox
Posted on 2010-12-23 22:53 penngo 閱讀(3616) 評(píng)論(1) 編輯 收藏 所屬分類: Java用JNA調(diào)用C/C++,很方便,寫了個(gè)很簡單的例子。
例子是使用Eclipse CDT + MinGW開發(fā)的:
C代碼,hello.c
將hello.c編譯成libDLL2.dll,放進(jìn)java的項(xiàng)目文件夾中,java調(diào)用方式
Java代碼,dll.java
先寫一個(gè)接口TestDll1映射C的方法,再通過這接口調(diào)用say(),在eclipse中編譯運(yùn)行這個(gè)java代碼,可以看到彈出“你好,window!”的窗口。
例子是使用Eclipse CDT + MinGW開發(fā)的:
C代碼,hello.c
#include <windows.h>
#include "stdio.h"
void say(){
MessageBox (NULL, TEXT ("你好, Windows!"), TEXT ("HelloMsg"), 0);
}
#include "stdio.h"
void say(){
MessageBox (NULL, TEXT ("你好, Windows!"), TEXT ("HelloMsg"), 0);
}
將hello.c編譯成libDLL2.dll,放進(jìn)java的項(xiàng)目文件夾中,java調(diào)用方式
Java代碼,dll.java
public class Dll {
public interface TestDll1 extends Library {
TestDll1 INSTANCE = (TestDll1)Native.loadLibrary("libDLL2", TestDll1.class);
public void say();
}
public static void main(String[] args) {
TestDll1.INSTANCE.say();
}
}
public interface TestDll1 extends Library {
TestDll1 INSTANCE = (TestDll1)Native.loadLibrary("libDLL2", TestDll1.class);
public void say();
}
public static void main(String[] args) {
TestDll1.INSTANCE.say();
}
}
先寫一個(gè)接口TestDll1映射C的方法,再通過這接口調(diào)用say(),在eclipse中編譯運(yùn)行這個(gè)java代碼,可以看到彈出“你好,window!”的窗口。