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

用Java获取活动窗口信息

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

用Java获取活动窗口信息

减轻您的痛苦,并使用JNA。您将需要下载
Win32 API的 jna.jarjna -platform.jar
。该PInvoke的
wiki和MSDN是找到合适的系统调用是有用的。

无论如何,这是用于打印当前活动窗口的标题和过程的代码。

import static enumeration.EnumerateWindows.Kernel32.*;import static enumeration.EnumerateWindows.Psapi.*;import static enumeration.EnumerateWindows.User32DLL.*;import com.sun.jna.Native;import com.sun.jna.Pointer;import com.sun.jna.platform.win32.WinDef.HWND;import com.sun.jna.ptr.PointerByReference;public class EnumerateWindows {    private static final int MAX_TITLE_LENGTH = 1024;    public static void main(String[] args) throws Exception {        char[] buffer = new char[MAX_TITLE_LENGTH * 2];        GetWindowTextW(GetForegroundWindow(), buffer, MAX_TITLE_LENGTH);        System.out.println("Active window title: " + Native.toString(buffer));        PointerByReference pointer = new PointerByReference();        GetWindowThreadProcessId(GetForegroundWindow(), pointer);        Pointer process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, pointer.getValue());        GetModulebaseNameW(process, null, buffer, MAX_TITLE_LENGTH);        System.out.println("Active window process: " + Native.toString(buffer));    }    static class Psapi {        static { Native.register("psapi"); }        public static native int GetModulebaseNameW(Pointer hProcess, Pointer hmodule, char[] lpbaseName, int size);    }    static class Kernel32 {        static { Native.register("kernel32"); }        public static int PROCESS_QUERY_INFORMATION = 0x0400;        public static int PROCESS_VM_READ = 0x0010;        public static native int GetLastError();        public static native Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, Pointer pointer);    }    static class User32DLL {        static { Native.register("user32"); }        public static native int GetWindowThreadProcessId(HWND hWnd, PointerByReference pref);        public static native HWND GetForegroundWindow();        public static native int GetWindowTextW(HWND hWnd, char[] lpString, int nMaxCount);    }}


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

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

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