2010年1月25日 星期一

Java 呼叫 WinAPI

因為我自己是玩 Visual Basic 6.0出身的當初玩 VB 玩到
很無聊,是一直到無意間買到 WinAPI on VB6 的書,才
開始繼續對 VB 有興趣。一直到接觸了 Java 之後,還是對
Windows API 抱著很大的興趣,一直想要用 Java 呼叫 WinAPI
但是都不得其門而入。過了一年多,現在想想當初真的很好笑
Java 操作 WinAPI 根本破壞了 Java 本身最大的特點:跨平台。
現在用 Java 呼叫 WinAPI 已經是不得以的情況才會用了....
如果有人想要用 Java 呼叫 Windows API,就參考看看吧。

【本文開始】

先備知識:Java、C、WindowsAPI
使用軟體:Dev C++ (Windows)

當安裝好 JDK 和 Dev C++ 之後,要先作一件事情,請到 JDK 安裝
目錄(我的例子是安裝在C:\Program Files\Java\jdk1.6.0_17)
找到 include 資料夾,並把裡面的所有檔案,都複製到 Dev C++ 安
裝目錄下的 include 中。這樣子 Dev C++ 在編譯檔案的時候,才抓的
到需要的 Header File。

因為 Java 不能透過 JNI 直接呼叫 Windows API,必須得另外撰寫一個
DLL 去連結 WinAPI。所以這邊要利用 自己撰寫的 DLL 去連結 WinAPI。

首先編寫好 Java 部分的程式,假設這邊要呼叫 Windows API 的 ShowWindow
方法,讓輸入的 hWnd 視窗隱藏起來:
/* In File WinAPI.java */
public class WinAPI
{
static{System.loadLibrary("WinAPI");}
public static native int setWindowVisible(int hWnd,int state);
}