2 回答
TA贡献1810条经验 获得超4个赞
这几天我一直在与你的问题作斗争。
我创建了一个枚举窗口的程序,它是 Java 应用程序(当然是在控制台应用程序上编写的),并捕获与您相同的问题。然后,我在 WPF 应用程序上重写它,枚举所有窗口,然后认识到:除了普通窗口之外,我看到一个名为“java access bridge”的奇怪窗口,问题很明显:
Windows_run 函数需要有一个活动的 Windows 消息泵。 另一种方式,您必须将它放在 WPF 应用程序的构造函数或类似的东西上。
if (result != FALSE) {
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
shutdownAccessBridge();
}
Java Monkey 应用程序中的代码。
创建隐藏窗口后,它会使用已注册的消息执行 PostMessage。访问桥的 JVM 端响应此消息,并将另一条消息回发到创建的窗口。因此,他们通过这种方式进行交流。而且,只有在消息泵可以处理消息后才能调用 JAB 函数。这就是为什么 java 猴子需要使用回调来处理它的业务的原因。
TA贡献1818条经验 获得超11个赞
为类名传递 null,如下面的代码所示:
IntPtr hWnd = FindWindow(null, "GLOBUS EDU"); //cast to IntPtr is redundant
bool Found = isJavaWindow(hWnd);
参考这里是Pinvoke文档,它对我有用!
- 2 回答
- 0 关注
- 1163 浏览
添加回答
举报