How to find running applications in a minimized state using java?

How to find all running applications on the Windows desktop in minimal condition using java?

+5
source share
1 answer

You need to download jna.jar and platform.jar first and add them to your classpath. You can find Windows system calls to view the MSDN documentation .

Here is the code to list all minimized 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);
    }
}
+4
source

All Articles