5
如何查找所有正在運行的應用程序在Windows桌面處於最小化狀態使用java?如何找到正在運行的應用程序處於使用java的最小化狀態?
如何查找所有正在運行的應用程序在Windows桌面處於最小化狀態使用java?如何找到正在運行的應用程序處於使用java的最小化狀態?
您需要首先downloadjna.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);
}
}