最佳答案
您需要先将download jna.jar和platform.jar添加到您的类路径中.您可以通过查看MSDN documentation来确定要进行的Windows系统调用.
以下是枚举所有最小化窗口的代码:
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinUser.WINDOWINFO;
import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;
public class Minimized {
private static final int MAX_TITLE_LENGTH = 1024;
private static final int WS_ICONIC = 0x20000000;
public static void main(String[] args) throws Exception {
User32.EnumWindows(new WNDENUMPROC() {
@Override
public boolean callback(HWND arg0,Pointer arg1) {
WINDOWINFO info = new WINDOWINFO();
User32.GetWindowInfo(arg0,info);
// print out the title of minimized (WS_ICONIC) windows
if ((info.dwStyle & WS_ICONIC) == WS_ICONIC) {
byte[] buffer = new byte[MAX_TITLE_LENGTH];
User32.GetWindowTextA(arg0,buffer,buffer.length);
String title = Native.toString(buffer);
System.out.println("Minimized window = " + title);
}
return true;
}
},0);
}
static class User32 {
static { Native.register("user32"); }
static native boolean EnumWindows(WNDENUMPROC wndenumproc,int lParam);
static native void GetWindowTextA(HWND hWnd,byte[] buffer,int buflen);
static native boolean GetWindowInfo(HWND hWnd,WINDOWINFO lpwndpl);
}
}