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
Initialize()
或初始化代码通常需要在 UI 线程或消息泵线程中调用。
- 使用
GetForegroundWindow()
或 GetActiveWindow()
中的 IntPtr
在 IsJavaWindow()
中总是 returns false,但使用 FindWindow()
从 user32.dll的方法。
我正在使用 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
Initialize()
或初始化代码通常需要在 UI 线程或消息泵线程中调用。- 使用
GetForegroundWindow()
或GetActiveWindow()
中的IntPtr
在IsJavaWindow()
中总是 returns false,但使用FindWindow()
从 user32.dll的方法。