Como obter a lista de todos os identificadores de janela em Java (usando JNA

Eu sou novato para JNA. Estou tentando obter identificadores para todas as janelas, incluindo os minimizados. Eu precisoHWND de todas as janelas. Eu já fiz a pergunta Windows: como obter uma lista de todas as janelas visívei o que me ajudou a obter a lista de janelas, mas temhWnd digite como int. Não posso usá-lo comcom.sun.jna.platform.win32.User32 funções que solicitamhWnd do tipocom.sun.jna.platform.win32.WinDef.HWND. Então, existe alguma maneira de obter todos os identificadores de janela do tipocom.sun.jna.platform.win32.WinDef.HWND em vez de int ponteiro? Finalmente, por que a diferençaint eHWND? Como aceita os dois? Estou um pouco confuso. Obrigado

Tenho o seguinte código (editado a partir da resposta da Hovercreft):

    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.platform.win32.User32;
    import com.sun.jna.platform.win32.WinDef.HWND;
    import com.sun.jna.platform.win32.WinDef.RECT;
    import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;

    public class TryWithHWND {

    public static void main(String[] args) {
        final User32 user32 = User32.INSTANCE;
        user32.EnumWindows(new WNDENUMPROC() {
            int count = 0;
            public boolean callback(HWND hWnd, Pointer arg1) {
                char[] windowText = new char[512];
                user32.GetWindowText(hWnd, windowText, 512);
                String wText = Native.toString(windowText);
                RECT rectangle = new RECT();
                user32.GetWindowRect(hWnd, rectangle);
                // get rid of this if block if you want all windows regardless
                // of whether
                // or not they have text
                // second condition is for visible and non minimised windows
                if (wText.isEmpty() || !(User32.INSTANCE.IsWindowVisible(hWnd)
                        && rectangle.left > -32000)) {
                    return true;
                }
                System.out.println("Found window with text " + hWnd
                        + ", total " + ++count + " Text: " + wText);
                return true;
            }
        }, null);
    }
}

Tentei usar apenas (não interface personalizada) o padrãoUser32 classe. Está funcionando bem. Eu tenho dúvida, por que estamos usando uma interface definida pelo usuário em vez de uma já existente? Mais uma coisa, sempre há diferença entre a assinatura do método definido pelo usuário e as já existentes. Por exemplo, a variávelwindowText échar[], enquanto a variável do Hovercraft é do tipobyte[]. Alguém pode me explicar? Obrigado

questionAnswers(1)

yourAnswerToTheQuestion