栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取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);   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号