E81086713E446D36F62B2AA2A3502B5EB155

          Java雜家

          雜七雜八。。。一家之言

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            40 Posts :: 1 Stories :: 174 Comments :: 0 Trackbacks

          公告

          所有文章和代碼除非特別說明, 均為本blog作者原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處和原作者. 謝謝!

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊(cè)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          利用周末時(shí)間把Native Splash Screen支持給做進(jìn)去了,現(xiàn)在在創(chuàng)建EXE時(shí)可以訂制程序啟動(dòng)時(shí)的Splash Screen圖片(BMP,JPG,GIF..)以及定制顯示的文字。

          Splash Screen會(huì)在你的程序顯示第一個(gè)窗口時(shí)自動(dòng)消失,假如你的程序永遠(yuǎn)不會(huì)顯示窗口,那么你可以在程序中顯式關(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之前就顯示的。

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


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

          Feedback

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

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

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

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

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

            回復(fù)  更多評(píng)論
            

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

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

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 广安市| 望都县| 通榆县| 宁化县| 宣化县| 福鼎市| 柳州市| 武山县| 延边| 苏尼特左旗| 竹溪县| 乌兰县| 霸州市| 新竹县| 乌恰县| 丹棱县| 兰溪市| 镇原县| 乐昌市| 南开区| 万年县| 阜康市| 密山市| 谢通门县| 柘城县| 青海省| 长子县| 闽侯县| 隆林| 什邡市| 乌什县| 襄汾县| 安福县| 横峰县| 界首市| 黎城县| 巧家县| 松滋市| 霍林郭勒市| 霞浦县| 班玛县|