利用周末时间把Native Splash Screen支持给做进去了,现在在创建EXE时可以订制程序启动时的Splash Screen图片(BMP,JPG,GIF..)以及定制显示的文字。
Splash Screen会在你的程序显示第一个窗口时自动消失,假如你的程序永远不会显示窗口,那么你可以在程序中显式关闭Splash Screen.
在你的程序中添加类似如下代码:
1 Class cls=Class.forName("com.yovn.labs.java2exe.loader.SplashScreen");
2 Method getIM=cls.getMethod("getInstance", new Class[0]);
3 Object screen=getIM.invoke(null, new Object[0]);
4 Method m=cls.getMethod("dispose", new Class[0]);
5 m.invoke(screen, new Object[0]);
6 //SplashScreen.getInstance().dispose();
7 System.out.println("disposed splash screen");
8
Splash Screen是在创建JVM之前就显示的。
那么这是怎么实现的呢?问题的关键在于程序显示第一个窗口时如何能通知到Splash Screen?
魔力在于API Hook!!
显示任何一个窗口,绝大多数(不知道是不是全部)都是通过ShowWindow()Windows API实现的,该函数定义在User32.dll中,通过查找JVM载入的所有Module,并在其中替换导入的该函数地址就可以在调用该函数时得到通知,从而实现自动关闭Splash Screen.
下载:
Java2exe_0.0.2.rar