[英]Inter-application communication between JAVA and C# using window messaging
[英]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
Initialize()
或一般的初始化代碼需要在 UI 線程或消息泵線程中調用。GetForegroundWindow()
或GetActiveWindow()
中的IntPtr
始終在IsJavaWindow()
中返回 false,但使用FindWindow()
可以從 user32.dll 的方法中進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.