当前位置: 代码迷 >> 综合 >> SWT Win32 Extension
  详细解决方案

SWT Win32 Extension

热度:47   发布时间:2023-12-09 01:43:39.0

SWT Win32 Extension 是Eclipse类库SWT的Win32本地原生扩展.

本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。

使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。

您仅仅需要做的就是编写Java代码,SWT Win32 Extension来负责剩下的部分。

SWT Win32 Extension提供了一系列的功能使您的应用程序看上去和Win32本机程序别无二致。

  1. 窗口装饰功能: 提供窗口置顶,透明,闪动等功能。
  2. 自定义窗口: 创建不规则的窗口。
  3. 访问Windows注册表。
  4. 系统文件夹: 获取系统特殊文件加的路径和图标。
  5. 系统快捷方式: 管理系统快捷方式。
  6. 系统相关信息: 收集系统CPU,内存,环境变量等相关信息。
  7. 系统会话: 提供关机,休眠,重启,注销等功能。
  8. 系统IO及网络功能: 提供磁盘和网络相关信息。
  9. 活动桌面功能: 管理Windows活动桌面。
  10. 系统钩子: 注册和卸载系统钩子,能够拦截和处理系统事件。
  11. 窗口系统菜单: 管理窗口菜单。
  12. 用户可以自定义系统菜单和处理菜单事件。
  13. Ole 控件: 提供对一些常用控件的封装,比如flash。

值得一提的是,您能够访问SWT提供的所有功能,因为SWT Win32 Extension是从SWT派生出来的。

如下代码示例:

Java代码
  1. import org.sf.feeling.swt.win32.internal.extension.Extension;
  2. public class SystemInfo {
  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. Extension Extension=new Extension();
  8. System.out.println("计算机名称: "+Extension.GetComputerName());
  9. System.out.println("系统登陆帐号: "+Extension.GetUserName());
  10. System.out.println("系统CPU编号: " + Extension.GetCPUID());
  11. System.out.println("系统 MAC编号: " + Extension.GetMACID());
  12. }
  13. }
import org.sf.feeling.swt.win32.internal.extension.Extension;
public class SystemInfo {
/**
* @param args
*/
public static void main(String[] args) {
Extension Extension=new Extension();
System.out.println("计算机名称: "+Extension.GetComputerName());
System.out.println("系统登陆帐号: "+Extension.GetUserName());
System.out.println("系统CPU编号: " + Extension.GetCPUID());
System.out.println("系统 MAC编号: " + Extension.GetMACID());
}
}

注意要使程序顺利运行,JAVA_HOME/bin必须要导入swt-extension-win32.dll 这个文件,由于文件下载下来后有三个DLL文件,还有两个是swt-gdip-win32.dll和swt-win32.dll,如果将他们全部导入进来结果会抛出个这样的异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.eclipse.swt.internal.C.PTR_sizeof()I
at org.eclipse.swt.internal.C.PTR_sizeof(Native Method)
at org.eclipse.swt.internal.C.<clinit>(C.java:24)
at com.hengte.example.SystemInfo.main(SystemInfo.java:10)

这个异常出现的原因是找不到DLL文件或者是多个DLL文件冲突所造成的,去掉其他的DLL文件只要导入swt-extension-win32.dll, 运行,这是控制台打印的结果:
计算机名称: XP-200901051818
系统登陆帐号: Administrator
系统CPU编号: BFEBFBFF00010676-0000000000000000
系统 MAC编号: [I@3ecfff

项目地址:http://feeling.sourceforge.net/?language=zh-cn

Eclipse插件更新站点URL: http://feeling.sourceforge.net/update

下载 SWT Win32 Extension (Build v2008.12.04)

下载 SWT Win32 Extension 示例插件 (Eclipse 3.2 or later)

下载 SWT Win32 Extension 本机示例程序 (Exe程序,不需要安装JRE)

  相关解决方案