我在 C# 中使用带有互操作的 Java Access Bridge API。当尝试AccessibleWindow
使用从 user32.dll 方法获得的 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;
}
}
我也在使用这个 repo 中的代码:Google Access Bridge