WEB开发网
开发学院软件开发Java 集成 Windows 本地应用到 Eclipse RCP 程序中 阅读

集成 Windows 本地应用到 Eclipse RCP 程序中

 2009-12-18 00:00:00 来源:WEB开发网   
核心提示: 注意:生成的 dll 文件名在选项 -Fe 后面配置,这里是 helloworld.dll,集成 Windows 本地应用到 Eclipse RCP 程序中(3),因为前面我们在 HelloWorld.java 文件中 loadLibary 的时候使用的名字是 helloworld,所以要保证这

注意:生成的 dll 文件名在选项 -Fe 后面配置,这里是 helloworld.dll,因为前面我们在 HelloWorld.java 文件中 loadLibary 的时候使用的名字是 helloworld。所以要保证这里的名字和前面 load 的名字一致。另外需要将 -I%java_home%\include -I%java_home%\include\win32 参数加上,因为在第四步里面编写本地方法的时候引入了 jni.h 文件,所以在这里需要加入这些头文件的路径。

完成了这些步骤之后就可以运行这个程序:java HelloWorld,运行的结果就是在控制台输出字符串“HelloWorld”。

实现窗口 Reparent

前面部分介绍了如何使用 JNI,接下来介绍如何通过 JNI 启动一个 Windows 的本地应用程序并且将其主窗口设置为指定窗口的子窗口。首先创建一个 Java 类,如下面的清单所示:

public class ReparentUtil { 
 static{ 
 System.loadLibrary("reparent"); 
 } 
 public static native int startAndReparent(int parentWnd, 
       String command,String wndClass); 
} 

其中 System.loadLibrary("reparent") 是用来加载名为 reparent 的动态库,我们会在这个动态库中具体实现方法 startAndReparent(…)。

startAndReparent 定义方法来启动 Windows 程序,并且将其窗口 reparent 到我们指定的窗口。其中:

int parentWnd: 父窗口句柄

String command:Windows 程序启动命令

String wndClass:Windows 程序主窗口类型

由于有的程序启动后会创建多个顶级窗口,所以我们在这里要指定一个主窗口类型来区分不同的顶级窗口。这个方法是一个本地方法,我们会用 C++ 生成为一个叫 reparent.dll 的动态库,这个方法即存在于这个动态库中。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:集成 Windows 本地

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接