本帖轉自
http://blog.csdn.net/nokiaguy/archive/2009/04/15/4684693.aspx
launcher下載
運行Java
程式(
SWING
或
SWT
的傳統型程式)可以直接執行
.class
檔案或將所有的
.class
檔案及相關的其他檔案壓縮成
.jar
檔案,然後使 用
javaw -jar my.jar
來運行程式(其中
my.jar
是一個
jar
檔案名稱,可以是任何指定的
jar
檔案)。但在
windows
下,使用者習慣直接運行一個
exe
來執行 程式。在網上有很多程式可以將
my.jar
或
.class
檔案直接轉換成
exe
檔案。但很多都是將
jar
或
.class
檔案放到
exe
裡成,這樣不太方 便。有些工具,如
javalauncher
可以使用一個
exe
程式(用
c
語言寫的)來調用
jar
檔案。但有時需要在運行程式之間做些其他的工具,例如,在 用戶端動態從服務端下載最新版本的程式。因此,在本文將使用
delphi2009
實現一個簡單的可以調用
jar
檔案的程式,讀者可以對這個程式進行任何擴 展,本文還提供了該程式的原始碼和
exe
檔案。
使用delphi
建立一個
VCL
工程。在本程式中不需要
form
,因此,可以將預設產生的
form
刪除。實際上,我們只需要調用
ShellExecute
方法就可以通過
javaw
命令來執行
jar
檔案,代碼如下:
shellexecute(GetActiveWindow, 'open','javaw', '-jar my.jar', '', SW_NORMAL);
其中GetActiveWindow
方法獲得當前視窗的控制代碼。在本程式中使用了一個
config.ini
檔案來指定要執行的
jar
檔案,實現的完整代碼如 下:
program launcher;
uses
Forms,
windows,shellapi, inifiles, sysUtils;
{$R *.res}
var
ini: tinifile;
JarFile: String;
begin
Application.Initialize;
ini := tinifile.Create(extractfilepath(application.ExeName) + 'config.ini');
JarFile := ini.ReadString('config', 'JarFile', '');
shellexecute(GetActiveWindow, 'open','javaw', PWideChar('-jar ' + JarFile), '', SW_NORMAL);
ini.Free;
Application.Run;
end.
在和exe
相同的目錄下建立一個
config.ini
檔案,內容如下:
[config]
JarFile = jars/swt.jar
其中swt.jar
檔案是執行的
jar
檔案,要放在目前的目錄的
jars
目錄中。現在的目錄結果如下:
launcher.exe
config.ini
jars/swt.jar
其中launcher.exe
和
config.ini
也被包含在本文的下載檔案中。讀者只需要修改
config.ini
檔案中的相應的
jar
檔案名稱即可。 也可以將
launcher.exe
改成其它的檔案名稱。還有就是要修改
launcher.exe
檔案的表徵圖,可以直接在
delphi2009
(低版本的
delphi
也可以,最好
7.0
以上)中改
,
也可以找一些編輯二進位資源的程式,直接開啟
launcher.exe
檔案,修改其中的表徵圖。
當然,本程式也可以使用任何可產生原生可執行檔的程式設計語言開發,如C
、
C++
等。
OK,現在就可以通過雙擊
launcher.exe
檔案來調用
jar
包了。要想對
launcher
進行擴充,就直接修改原始碼吧。其實這個實現是非常非常 地簡單!!!