我將與JNA打交道並嘗試獲取JDialog中的JInternalFrame的標題。我可以通過使用JNA獲得所有Windows Programns標題,但JInternalFrame的標題不會在列表中顯示。JNA Win32獲取JInternalFrame的標題
I'm做這樣的事情:
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);
...
所有窗口標題出現,但JInternalFrames不,有人可以幫助我嗎?
其實,我會更具體。我正在使用JNA,因爲我試圖把重點放在生產中運行的程序上。我無權訪問應用程序生產代碼,也無法訪問此計算機上的任何內容。我只能打電話給我自己的jar程序。我的程序是一個機器人,它填充了特定JInternalFrame中的某些表單。出於某種原因,這個框架在ActionPerformed按鈕事件之後失去了焦點,並且我想使用我的程序在此框架上再次設置焦點以繼續填充過程。我可以通過在JInternalFrame的任何位置點擊來做到這一點,但這有點冒險,因爲如果我錯過點擊框架內的內容,我的程序會填寫錯誤的表單。那麼,有沒有辦法將焦點集中在使用JNA + JRobot的第三方應用程序的JInternalFrame上,或者訪問JVM的一些暗部力量,:)?我可以將焦點設置到JDialog,但不是它的內部框架。謝謝
您可以看一下[Abbot](https://abbot.sf.net)如何遍歷Java組件層次結構以查找Swing樹中的所有組件。您需要這樣做才能找到像「JInternalFrame」這樣的輕量級組件(即那些沒有本地對等/ HWND的組件)。 – technomage 2015-04-01 10:06:38