gpt4 book ai didi

java - JNA Win32 获取JInternalFrame的标题

转载 作者:行者123 更新时间:2023-12-02 04:49:20 24 4
gpt4 key购买 nike

我正在处理 JNA 并尝试获取 JDialog 内的 JInternalFrame 的标题。我可以使用 JNA 获取所有 Windows 程序标题,但 JInternalFrame 的标题不会出现在列表中。

我正在做这样的事情:

user32.EnumWindows(new User32.WNDENUMPROC() {

int count;

public boolean callback(HWND hWnd, Pointer userData) {
char[] windowText = new char[1024*2];
EnumerateWindows.User32DLL.GetWindowTextW(hWnd, windowText,
EnumerateWindows.getMaxTitleLength());

String wText = Native.toString(windowText);
wText = (wText.isEmpty()) ? "" : " " + wText;

if (!wText.isEmpty())
logger.warn("Window Title:"
+ wText);

return true;
}


}, null);

...

所有 Windows 标题都出现,但 JInternalFrames 没有,有人可以帮助我吗?

实际上,我会更具体。我使用 JNA 是因为我试图将注意力集中在生产环境中运行的程序上。我无权访问应用程序生产代码,也无权在此计算机上安装任何内容。我只能调用我自己的jar程序。我的程序是一个机器人,它填写这个特定 JInternalFrame 内的一些表格。由于某种原因,该框架在 ActionPerformed 按钮事件之后失去了焦点,我想使用我的程序再次将焦点设置在该框架上以继续填充过程。我可以通过单击 JInternalFrame 的任何位置来完成此操作,但这有一点风险,因为如果我错过在框架内单击,我的程序可能会填写错误的表单。那么,有没有办法使用 JNA + JRobot 将焦点集中在第三方应用程序的 JInternalFrame 上,或者访问 JVM 的某些黑暗面力量,:)?我可以将焦点设置到 JDialog,但不能设置到它的内部框架。谢谢

最佳答案

Swing 非顶级组件是轻量级组件,因此不是由操作系统创建的,没有 HWND 窗口句柄,因此无法通过 JNA 获取。相反,您必须通过 JVM,例如在保存您感兴趣的 JInternalFramesJDesktopPane 上调用 getAllFrames()

关于java - JNA Win32 获取JInternalFrame的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com