【问题标题】:Java Access Bridge (JAB) - Cannot get valid responseJava Access Bridge (JAB) - 无法获得有效响应
【发布时间】:2020-02-08 05:51:24
【问题描述】:

我知道关于这个主题的几个现有问题,但他们要么没有答案,要么答案对我不起作用,所以我在这里再试一次。

我正在尝试在 WinForms C# 项目中使用 Java Access Bridge API。 Java Ferret 和 Java Monkey 都可以正常工作,这告诉我桥已安装并且至少能够运行。但是,当我尝试在自己的代码中运行 isJavaWindow() 时,它总是返回 false。我尝试了其他建议将 Windows_run() 代码放在表单构造函数中的解决方案,但这对我没有影响。

值得注意的是,下面的代码在我的家用 PC 上对我有效,但在我的工作 PC 上无效。它也适用于同事,但前提是他直接运行可执行文件 - 如果他尝试从 Visual Studio 运行它,它也不起作用。

任何帮助将不胜感激。几天来,我一直在为此烦恼,并且已经用尽了我在 Google 或其他地方遇到的所有可能性。

        JabApi.Windows_run();
        Application.DoEvents();

        string windowName = "SwingSet2";
        string className = "SunAwtFrame";

        IntPtr hWnd = JabApi.FindWindow(className, windowName);

        //This always returns false (0), even though it's pointing to a valid Java window
        if (JabApi.isJavaWindow(hWnd)==1) 
        {
             MessageBox.Show("Java window found!");
        }

【问题讨论】:

    标签: c# java-access-bridge


    【解决方案1】:

    我会在这里回答我自己的问题。

    问题原来是我以管理员身份运行 Visual Studio。当我尝试以正常权限运行 VS 时,Java Access Bridge 代码立即开始按预期工作。

    可执行文件本身也遇到了类似的问题。当我之前在 VS 之外运行可执行文件时,结果发现我是从具有提升权限的位置运行它的。当我将可执行文件移动到正常位置时,它按预期工作。

    【讨论】:

      【解决方案2】:

      如果引用的 Access 网桥 dll 与应用程序的位版本不匹配,isJavaWinndow() 方法也会返回 false。确保为您的 64 位应用程序(或 32 位版本,否则)引用 64 位 dll 版本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-21
        • 1970-01-01
        相关资源
        最近更新 更多