C# Java访问桥(JAB)-无法获得有效响应

C# Java访问桥(JAB)-无法获得有效响应,c#,java-access-bridge,C#,Java Access Bridge,我知道有几个关于这个话题的问题,但它们要么没有答案,要么答案对我不起作用,所以我在这里再试一次 我试图在WinForms C#项目中使用Java访问桥API。Java Ferret和Java Monkey都工作得很好,这告诉我桥接器已经安装,并且至少能够正常工作。但是,当我尝试在自己的代码中运行isJavaWindow()时,它总是返回false。我尝试过其他建议将Windows_run()代码放在表单构造函数中的解决方案,但这对我没有效果 值得注意的是,下面的代码确实适用于我的家用电脑,但不适

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

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

值得注意的是,下面的代码确实适用于我的家用电脑,但不适用于我的工作电脑。它也适用于同事,但前提是他直接运行可执行文件-如果他试图从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!");
        }

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

问题是我是以管理员的身份运行VisualStudio的。当我尝试以正常权限运行VS时,Java访问桥代码立即开始按预期工作

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

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