我知道关于这个主题的几个现有问题,但他们要么没有答案,要么答案对我不起作用,所以我在这里再试一次。
我正在尝试在 WinForms C# 项目中使用 Java Access Bridge API。Java Ferret 和 Java Monkey 都可以正常工作,这告诉我桥已安装并且至少能够运行。但是,当我尝试在自己的代码中运行 isJavaWindow() 时,它总是返回 false。我尝试了其他解决方案,建议将 Windows_run() 代码放在表单构造函数中,但这对我没有影响。
值得注意的是,下面的代码确实适用于我的家用 PC,但不适用于我的工作 PC。它也适用于同事,但前提是他直接运行可执行文件 - 如果他尝试从 Visual Studio 运行它,它也不起作用。
任何帮助,将不胜感激。几天来,我一直在为此烦恼,并且已经用尽了我在谷歌或其他地方遇到的所有可能性。
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!");
}