c# - 从 .NET 应用程序枚举和读取 Java 应用程序的 UI 控件

标签 c# java .net interop

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

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

请分享您在类似任务中的经验,或者简单地指出我正确的方向。

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

最佳答案

我找到了解决方案。 我的 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

关于c# - 从 .NET 应用程序枚举和读取 Java 应用程序的 UI 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369850/

相关文章:

c# - 在循环迭代之间执行代码

c# - "Before the ` catch ` block is executed, the runtime checks for ` finally ` blocks.",什么意思?

java - 重用 Morphia 查询有没有好的模式?

c# - SQL Server SMO - 备份 - 如何确定失败/成功?

.net - EntityFramework 自定义关联

c# - 如果 watin 中出现对话框,如何默认使测试失败

c# - 反编译c#动态操作时看到的语法到底是什么意思?

java - 如何防止 View 重叠?

java - 字符串数字到日期和时间格式

.net - Entity Framework 中使用代码优先的 TVF(表值函数)