E81086713E446D36F62B2AA2A3502B5EB155

          Java雜家

          雜七雜八。。。一家之言

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            40 Posts :: 1 Stories :: 174 Comments :: 0 Trackbacks
          利用周末時間把Native Splash Screen支持給做進去了,現(xiàn)在在創(chuàng)建EXE時可以訂制程序啟動時的Splash Screen圖片(BMP,JPG,GIF..)以及定制顯示的文字。

          Splash Screen會在你的程序顯示第一個窗口時自動消失,假如你的程序永遠不會顯示窗口,那么你可以在程序中顯式關(guān)閉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是在創(chuàng)建JVM之前就顯示的。

          那么這是怎么實現(xiàn)的呢?問題的關(guān)鍵在于程序顯示第一個窗口時如何能通知到Splash Screen?
          魔力在于API Hook!!
          顯示任何一個窗口,絕大多數(shù)(不知道是不是全部)都是通過ShowWindow()Windows API實現(xiàn)的,該函數(shù)定義在User32.dll中,通過查找JVM載入的所有Module,并在其中替換導入的該函數(shù)地址就可以在調(diào)用該函數(shù)時得到通知,從而實現(xiàn)自動關(guān)閉Splash Screen.


          下載:
          Java2exe_0.0.2.rar
          posted on 2007-03-04 00:53 DoubleH 閱讀(2340) 評論(8)  編輯  收藏

          Feedback

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-03-04 15:21 azure
          厲害,同時精通c和java真不容易。
          jdk6里面可以通過啟動的時候添加splash screen參數(shù)啟動,如:
          java -cp ... -splash splashImage ... 來啟動,不過沒有你這么做好,因為這樣啟動的只是一個image,象進度條等處理比較麻煩一點。
            回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-03-04 16:52 Druze.libo
          運行了一下java2exe,機子重啟了,呵呵  回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-03-04 17:47 Javacap
          @Druze.libo
          呵呵,那真是非常不好意思阿。。。。能mail告訴我你的環(huán)境么?  回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)][未登錄] 2007-03-06 14:47 quietywind
          還是跟上一個版本一樣,點擊add后沒有任何反應,我的JRE是1.5版的,會是什么問題呢?  回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-03-06 16:01 Javacap
          @quietywind
          非常抱歉!!!我一不小心使用了個JDK1.6 的類javax.jswing.filechooser.FileNameExtentionFilter
          今晚回家更新一下!

            回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-03-06 21:35 Javacap
          @quietywind
          現(xiàn)在已更新了,去掉了JDK6中的類,歡迎使用!!  回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)][未登錄] 2007-03-07 09:29 quietywind
          多謝,使用了一下效果不錯,不過好像目前不支持中文路徑,可以共享一下思路么? 讓我也可以學習一下 :)  回復  更多評論
            

          # re: Java轉(zhuǎn)EXE工具(二)[也談Splash Screen實現(xiàn)] 2007-12-21 13:29 Ikbear
          朋友,我運行你那個程序,點擊add,半天才跳出對話框啊。感覺大的JAVA程序在我機子上運行都是很慢很慢的,netbeans也是一樣的效果,會是顯卡的問題嗎?還是驅(qū)動沒裝好呢?  回復  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 安仁县| 玛多县| 山阳县| 安龙县| 肃南| 浦江县| 海安县| 丹巴县| 泽普县| 芦溪县| 民县| 屏南县| 墨竹工卡县| 连平县| 谷城县| 彭阳县| 阳东县| 仁布县| 扶绥县| 松潘县| 安丘市| 绍兴市| 嫩江县| 同心县| 睢宁县| 灵寿县| 鄂伦春自治旗| 巴塘县| 桓仁| 错那县| 江源县| 万源市| 永年县| 南岸区| 南安市| 汉沽区| 肃南| 灌云县| 渭源县| 临西县| 宜君县|