Java应用程序窗口未在C#InterOp中识别为Java窗口

我在C#中将Java access Bridge API与互操作一起使用。尝试使用从user32.dll方法accessibleWindow获得的hwnd创建新的GetForegroundWindow()时,它不会将该窗口识别为Java窗口,并返回null。 IsJavaWindow()返回false,但是第二次调用则返回true。我使用示例“ 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;      
            }
        }

我也在使用此仓库中的代码:Google Access Bridge

eywe5275 回答:Java应用程序窗口未在C#InterOp中识别为Java窗口

  1. Initialize()或通常需要在UI线程或消息泵送线程中调用的初始化代码。
  2. 使用IntPtrGetForegroundWindow()中的GetActiveWindow()IsJavaWindow()中始终返回false,但是使用FindWindow()可以从user32.dll的方法中使用。
本文链接:https://www.f2er.com/3016161.html

大家都在问