4

我有一个用 Java 编写的应用程序。该应用程序中有几个 UI 控件(文本框、网格、按钮等)。我需要开发 .NET 应用程序,它能够列出 UI 元素并从中读取文本数据。我在获取 Java 应用程序的窗口句柄时没有问题,但之后我被卡住了。

Java 应用程序是第三方的,不能以任何方式修改。我在 Java 方面的经验为零,但在 C# 方面经验丰富。我尝试使用 Java Access Bridge,但它似乎不起作用。据我了解,Java 应用程序需要支持 Java Accessibility API,它可能不支持。

请分享您对类似任务的经验,或者只是为我指明正确的方向。

如何从 Java VM 外部枚举/读取 UI 控件?

4

3 回答 3

3

我找到了解决方案。我的 java 应用程序似乎仍然支持 Java Access Bridge,但一开始我无法让它工作。

提示:

  1. WinForms应用程序需要使用 Java Access Bridge API,我试图从控制台 .NET 应用程序访问它。(WPF应该也支持,但我没有测试)

  2. Windows_run 方法应该在表单的构造函数中调用。就在您访问任何其他 API 函数之前。

  3. 应在文件accessibility.properties(文件夹:C:\Program Files\Java\jre7\lib)中启用Java Access Bridge

于 2012-11-14T12:01:26.640 回答
0

唯一的方法是手动转换 .NET -> Java 或 Java -> .NET,或者可能有一些商业转换器。您可以通过创建实例在 Java VM 中运行 Java 代码,但 Java 没有这样的互操作,它不是 COM。但是,可能很有用。

于 2012-11-13T22:29:17.317 回答
0

您需要执行类似于此 StackOverflow 示例中的代码的操作来获取所有子窗口,然后使用WM_GETTEXT读取文本数据。

于 2012-11-13T22:29:41.203 回答