Java Access Bridge (JAB) - 无法获得有效响应
Java Access Bridge (JAB) - Cannot get valid response
我知道关于这个主题的几个现有问题,但他们要么没有答案,要么答案对我不起作用,所以我在这里再试一次。
我正在尝试在 WinForms C# 项目中使用 Java Access Bridge API。 Java Ferret 和 Java Monkey 都工作正常,这告诉我桥已安装并且至少能够运行。但是,当我在自己的代码中尝试 运行 isJavaWindow() 时,它总是 returns false。我已经尝试过其他建议将 Windows_run() 代码放在表单构造函数中的解决方案,但这对我没有影响。
值得注意的是,下面的代码确实适用于我的家用电脑,但不适用于我的工作电脑。它也适用于同事,但前提是他直接 运行s 可执行文件 - 如果他试图从 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!");
}
我会在这里回答我自己的问题。
问题原来是我 运行 Visual Studio 作为管理员。当我用普通权限尝试 运行 VS 时,Java Access Bridge 代码立即开始按预期工作。
可执行文件本身 运行 陷入了类似的问题。当我之前 运行 VS 外部的可执行文件时,结果发现我是 运行 它来自具有提升权限的位置。当我将可执行文件移动到正常位置时,它按预期工作。
如果引用的 Access 桥 dll 与应用程序的 位版本 不匹配,isJavaWinndow() 方法也会 returns 错误。确保为您的 64 位应用程序引用 64 位 dll 版本(否则为 32 位版本)。
我知道关于这个主题的几个现有问题,但他们要么没有答案,要么答案对我不起作用,所以我在这里再试一次。
我正在尝试在 WinForms C# 项目中使用 Java Access Bridge API。 Java Ferret 和 Java Monkey 都工作正常,这告诉我桥已安装并且至少能够运行。但是,当我在自己的代码中尝试 运行 isJavaWindow() 时,它总是 returns false。我已经尝试过其他建议将 Windows_run() 代码放在表单构造函数中的解决方案,但这对我没有影响。
值得注意的是,下面的代码确实适用于我的家用电脑,但不适用于我的工作电脑。它也适用于同事,但前提是他直接 运行s 可执行文件 - 如果他试图从 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!");
}
我会在这里回答我自己的问题。
问题原来是我 运行 Visual Studio 作为管理员。当我用普通权限尝试 运行 VS 时,Java Access Bridge 代码立即开始按预期工作。
可执行文件本身 运行 陷入了类似的问题。当我之前 运行 VS 外部的可执行文件时,结果发现我是 运行 它来自具有提升权限的位置。当我将可执行文件移动到正常位置时,它按预期工作。
如果引用的 Access 桥 dll 与应用程序的 位版本 不匹配,isJavaWinndow() 方法也会 returns 错误。确保为您的 64 位应用程序引用 64 位 dll 版本(否则为 32 位版本)。