如何获取Java中所有窗口句柄的列表(使用JNA)?

如何获取Java中所有窗口句柄的列表(使用JNA)?,第1张

如何获取Java中所有窗口句柄的列表(使用JNA)?

JNA的最新版本已经发生了一些变化应该解决这个问题(如JNA的作者之一,卢克Quinane)。如果使用最新版本并检查JNA
API
,则会看到WinUser.WNDENUMPROC接口的方法实际上使用WinDef.HWND作为其参数,而不是long或int。

例如:

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;import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;import com.sun.jna.win32.StdCallLibrary;public class TryWithHWND {   public interface User32 extends StdCallLibrary {      User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);      boolean EnumWindows(WinUser.WNDENUMPROC lpEnumFunc, Pointer arg);      int GetWindowTextA(HWND hWnd, byte[] lpString, int nMaxCount);   }   public static void main(String[] args) {      final User32 user32 = User32.INSTANCE;      user32.EnumWindows(new WNDENUMPROC() {         int count = 0;         @Override         public boolean callback(HWND hWnd, Pointer arg1) { byte[] windowText = new byte[512]; user32.GetWindowTextA(hWnd, windowText, 512); String wText = Native.toString(windowText); // get rid of this if block if you want all windows regardless of whether // or not they have text if (wText.isEmpty()) {    return true; } System.out.println("Found window with text " + hWnd + ", total " + ++count       + " Text: " + wText); return true;         }      }, null);   }}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5016704.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存