如何使用java找到正在运行的应用程序处于最小化状态?

前端之家收集整理的这篇文章主要介绍了如何使用java找到正在运行的应用程序处于最小化状态?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如何使用javaWindows桌面中找到所有正在运行的应用程序处于最小化状态?

最佳答案
您需要先将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);
    }
}

猜你在找的Java相关文章