Java 应用程序 Window 在 C# InterOp 中未被识别为 java window

Java Application Window not recognized as java window in C# InterOp

我正在使用 Java Access Bridge API 与 C# 中的互操作。当尝试使用从 user32.dll 方法 GetForegroundWindow() 获得的 hwnd 创建新的 AccessibleWindow 时,它无法将 window 识别为 java window,返回空值。 IsJavaWindow() returns 错误,但第二次调用它 returns 正确。我用示例 "SwingSet2" 应用程序对此进行了测试。

        public void Initialize()
        {
            if(!Initialized)
            {
                accessBridge = new AccessBridge();
                var hwnd = WindowsNativeMethods.GetForegroundWindow();
                var window = accessBridge.CreateAccessibleWindow(hwnd);
                window.AccessBridge.Initialize();
                window.AccessBridge.Functions.GetAccessibleContextFromHWND(hwnd, out vmId, out mainContext);
                Initialized = true;      
            }
        }

我也在使用这个 repo 中的代码:Google Access Bridge

  1. Initialize() 或初始化代码通常需要在 UI 线程或消息泵线程中调用。
  2. 使用 GetForegroundWindow()GetActiveWindow() 中的 IntPtrIsJavaWindow() 中总是 returns false,但使用 FindWindow() 从 user32.dll的方法。