1
21
您没有编写任何C/JNI代码。来自Java:
Caveats:
|
2
14
这个小JNI方法接受一个窗口标题并返回相应的窗口句柄。
更新: 有了JNA,事情就简单了一点。我做了一个 small example 找到手柄,用它把程序放到最前面。 |
3
10
下面的代码允许您传递一个组件来获取它的窗口句柄(hwnd)。要确保组件具有相应的窗口句柄,请调用组件上的isLightweight(),并验证它是否等于false。如果没有,请通过调用component.getParent()尝试它的父级。 Java代码:
头文件main.h:
c源main.c:
|
4
5
上述两种方法都工作得很好,但是它们都返回一个HWND作为Java int(32位)。对于32位平台来说,这是可以的,但是您的应用程序不太可能在64位平台上运行。我将把返回类型更改为long(64位),因为它在64位和32位系统上都能正常工作(您只需要重新编译DLL)。 |
5
4
我发现这一点: http://jna.java.net/javadoc/com/sun/jna/Native.html#getWindowID(java.awt.Window ) JNA允许您调用本机库,而不必编写JNI本机代码。 结果发现库本身有一个方法,该方法接受一个窗口并生成一个int,大概是一个句柄(或指针?)希望在所有平台上都能工作。 |
6
1
在JNA库中,我们看到在Java 5中使用原生AWT,而在无头运行时使用6不满足链接错误,因此使用动态链接。见方法
|
7
1
这与JaredMacd的答案相同,但它使用反射,以便代码可以在非Windows计算机上编译和加载。当然,如果你试着称之为失败。
|
eskadi · 如何获取任务管理器中显示的活动窗口应用程序名称 10 年前 |