簡體   English   中英

Java 應用程序窗口未被識別為 C# InterOp 中的 java 窗口

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

我在 C# 中使用帶有互操作的 Java Access Bridge API。 當嘗試使用從 user32.dll 方法GetForegroundWindow()獲得的 hwnd 創建一個新的AccessibleWindow時,它不將該窗口識別為 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;      
            }
        }

我也在使用這個 repo 中的代碼: Google Access Bridge

  1. Initialize()或一般的初始化代碼需要在 UI 線程或消息泵線程中調用。
  2. 使用GetForegroundWindow()GetActiveWindow()中的IntPtr始終在IsJavaWindow()中返回 false,但使用FindWindow()可以從 user32.dll 的方法中進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM