Java Access Bridge API documentation州:
Java Access Bridge API调用包含在
AccessBridgeCalls.h
中 要使用它们,还必须编译文件AccessBridgeCalls.c
, 它充当您的应用程序和之间的接口WindowsAccessBridge.dll
。
但是当我尝试用AccessBridgeCalls.h
创建一个dll时AccessBridgeCalls.c
,它说缺少AccessBridgeDebug.h
个文件。
如何调用initiateAccessBridge()
方法?我期待执行类似于JavaMonkey.exe的任务,例如识别Java Swing应用程序中的组件。
当我从Access Bridge调用isJavaWindow(int)
时,它总是为所有处理程序返回false。
答案 0 :(得分:0)
JAB依赖于Windows Messaging机制来执行进程间通信。您必须设置一个线程来运行消息泵循环并在该线程中调用initiateAccessBridge()
,否则诸如isJavaWindow()
之类的某些方法将始终返回false
。
这是C#参考:
var accessBridge = new AccessBridge();
// Use WPF UI thread if there is one
var messageLoopDispatcher = Application.Current?.Dispatcher;
if (messageLoopDispatcher == null)
{
var readyEvent = new ManualResetEvent(false);
var messageLoopThread = new Thread(() =>
{
messageLoopDispatcher = Dispatcher.CurrentDispatcher;
readyEvent.Set();
Dispatcher.Run();
});
messageLoopThread.SetApartmentState(ApartmentState.STA);
messageLoopThread.Start();
readyEvent.WaitOne();
}
messageLoopDispatcher.Invoke(() =>
{
accessBridge.Initialize();
});