我正在处理 JNA 并尝试获取 JDialog 内的 JInternalFrame 的标题。我可以使用 JNA 获得所有 Windows Programns 标题,但 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,但不能设置到它的内部框架。谢谢