2012-11-13 149 views
4

我有一個用Java編寫的應用程序。該應用程序中有幾個UI控件(文本框,網格,按鈕等) 我需要開發.NET應用程序,它將能夠列出UI元素並從中讀取文本數據。我沒有問題獲得Java應用程序的窗口句柄,但之後我卡住了。從.NET應用程序枚舉和讀取Java應用程序的UI控件

Java應用程序是第三方的,不能以任何方式進行修改。我在Java中沒有經驗,但在C#中有豐富的經驗。 我嘗試使用Java Access Bridge,但它似乎不工作。據我所知,Java應用程序需要支持Java Accessibility API,它可能不支持。

請分享您的經驗與類似的任務或只是指向一個正確的方向。

如何從外部Java VM枚舉/讀取UI控件?

回答

1

我找到了解決方案。 似乎Java Access Bridge仍然支持我的Java應用程序,但是我一開始無法使其工作。

提示:

  1. 的WinForms應用程序需要使用Java Access Bridge的API,我試圖從控制檯的.net應用程序訪問它。 (WPF也應該支持,但是我沒有測試)

  2. Windows_run方法應該在表格的構造函數中調用。就在您訪問任何其他API函數之前。

  3. Java訪問大橋應在文件中啓用accessibility.properties(文件夾:C:\ Program Files文件\的Java \ jre7 \ LIB)

0

唯一的辦法是轉換.NET - > Java或Java - > .NET是手動或可能有一些商業轉換器。您可以通過創建實例來運行Java VM內部的Java代碼,但是Java沒有這種互操作性,它不是COM。但是,this可能會有用。

0

您需要做一些類似於the code in this StackOverflow example的操作來獲取所有子窗口,然後使用WM_GETTEXT來讀取文本數據。

+0

應用程序是Java的事實不應該問題 - 它仍然在Windows上運行,需要調用Windows API來生成基本UI元素,如文本框等。 – prprcupofcoffee

+2

如果那會很容易...... Java在虛擬機中運行並自行繪製UI元素。 我不認爲它使用Windows API進行UI繪圖(除了窗口標題和最小化/最大化/關閉按鈕)。 除了上面提到的,至少UIA驗證工具不會顯示任何內容。 –

相關問題