利用周末時間把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