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

时间:2012-11-13 22:18:57

标签: c# java .net interop

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

Java应用程序是第三方,无法以任何方式进行修改。 我没有Java经验,但在C#方面经验丰富。 我尝试使用Java Access Bridge,但它似乎不起作用。据我所知,Java应用程序需要支持Java Accessibility API,它可能不支持。

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

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

3 个答案:

答案 0 :(得分:3)

我找到了解决方案。 我的Java应用程序似乎仍然支持Java Access Bridge,但我最初无法使其工作。

提示:

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要执行the code in this StackOverflow example之类的操作才能获取所有子窗口,然后使用WM_GETTEXT来读取文本数据。