使用java处理外部窗口

Bal*_*ash 11 java winapi

我需要检查外部窗口(另一个java程序,但不是由我正在处理的程序控制)是否使用标题打开,如果打开,则根据Java中的用户命令最大化或最小化它(我只知道窗口的标题,没有别的).谷歌只说我可以winapi用来获取窗口句柄并使用句柄操纵它,但我无法找到如何做到这一点.

我可以在这里找到关于如何使用JNI的参考: 在Java Swing中如何获得对窗口的Win32窗口句柄(hwnd)引用?.是否可以在不使用JNI的情况下执行此操作?

有人可以帮我理解如何做到这一点.

感谢致敬

Luk*_*ane 18

我刚刚在JNA中添加了很多与win32相关的窗口函数.你可以在这里看到详细信息.

// Find and minimize a window:
WinDef.HWND hWnd = User32.INSTANCE.FindWindow("className", "windowName");
User32.INSTANCE.ShowWindow(hWnd, WinUser.SW_MINIMIZE);
Run Code Online (Sandbox Code Playgroud)

您还可以枚举所有窗口:

final WinDef.HWND[] windowHandle = new WinDef.HWND[1];
User32.INSTANCE.EnumWindows(new WinUser.WNDENUMPROC() {
    @Override
    public boolean callback(WinDef.HWND hwnd, Pointer pointer) {
        if (matches(hwnd)) {
            windowHandle[0] = hwnd;
            return false;
        }
        return true;
    }
}, Pointer.NULL);

// Minimize or maximize windowHandle[0] here...
Run Code Online (Sandbox Code Playgroud)