Java转EXE工具(二)[也谈Splash Screen实现]

Java转EXE工具(二)[也谈Splash Screen实现]
利用周末时间把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

你可能感兴趣的:(Java转EXE工具(二)[也谈Splash Screen实现])