5

Javaを使用して、Windowsデスクトップで実行中のすべてのアプリケーションが最小化された状態になっていることを確認するにはどうすればよいですか?

4

1 に答える 1

4

最初にjna.jarplatform.jarをダウンロード して、クラスパスに追加する必要があります。MSDNのドキュメントを参照すると、作成する 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);
    }
}
于 2012-07-04T17:25:40.427 に答える