如何使用java来查找Windows桌面中所有正在运行的应用程序处于最小化状态?
答案 0 :(得分:4)
您需要先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);
}
}