2008年7月11日金曜日

JavaからWin32APIをたたく方法

このエントリーをはてなブックマークに追加
JavaからWin32APIを呼ぶ方法を調べたのでメモしときます
(Cとかで書け、というツッコミは御勘弁)

JavaからC系の言語を使用するための方法として
JNI(Java Native Interface)が存在します。

Win32APIを使用するCのプログラムコードを書き、
それをJavaからこのJNIを利用することで、間接的にJavaからWin32APIを使用することが可能となりますが、JNIは使用するまでに多くのステップ数を踏む必要があります。



そこで、Win32APIをJavaから利用するためのライブラリを使用します。

そのライブラリはEclipseのPluginsディレクトリ内に存在する「org.eclipse.swt.win32.win32.x86_[バージョン].jar」です。

このjarファイルにクラスパスを通し、importすることで、ライブラリを利用することができます。
(Eclipseでjarファイルにクラスパスを通す場合は[プロジェクト名を右クリック]-[Build Pass]-[Add External Archives]です)

/////////////////////
サンプルプログラム
/////////////////////
//Main.java

import org.eclipse.swt.internal.win32.OS;

public class Main {
static void process() {
int hDC = OS.GetDC(0);
try {
for (int i = 0; i < 500; i += 1) {
OS.MoveToEx(hDC, 0, i, 0);
OS.LineTo(hDC, 500, 500 - i);
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} finally {
OS.ReleaseDC(0, hDC);
}
}

public static void main(String[] args) {
process();
}
}

参考サイト:
http://homepage2.nifty.com/igat/igapyon/diary/2005/ig051228.html
http://d.hatena.ne.jp/unageanu/20070518