使用 JScript 創(chuàng)建 .exe 或 .dll 文件的方法
更新時(shí)間:2011年07月13日 00:23:12 作者:
JScript 是由微軟開(kāi)發(fā)的活動(dòng)腳本語(yǔ)言,基于 ECMAScript 規(guī)范實(shí)現(xiàn)。Internet Explorer 中的 JavaScript,實(shí)際上是指 JScript。
什么是 JScript?
JScript 是由微軟開(kāi)發(fā)的活動(dòng)腳本語(yǔ)言,基于 ECMAScript 規(guī)范實(shí)現(xiàn)。Internet Explorer 中的 JavaScript,實(shí)際上是指 JScript。JScript 已被 Windows Script Host(WSH)支持(WSH 中的 JavaScript shell scripting:C:\> cscript jslint.js)。JScript 最新的版本(JScript.NET)基于 ECMAScript 4.0 ,并且可以在 .Net 環(huán)境下編譯。
.NET Framwork 中包含有 JScript 編譯器 :JScriptCompiler (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe),其可以將 JScript 文件編譯為一個(gè) .exe 或者 .dll 文件。
為了方便使用,我們可以將 JScriptCompiler 的路徑加入到環(huán)境變量(環(huán)境變量 –> 系統(tǒng)變量 –> Path)中。在 CMD 程序運(yùn)行窗口中直接調(diào)用命令 “jsc”,就可以看到編譯器相關(guān)的幫助選項(xiàng)。
jsc [選項(xiàng)] <源文件> [[選項(xiàng)] <源文件>…]
JScript 編譯器選項(xiàng)
– 輸出文件 -
/out:<file> 指定二進(jìn)制輸出文件的名稱
/t[arget]:exe 創(chuàng)建控制臺(tái)應(yīng)用程序(默認(rèn))
/t[arget]:winexe 創(chuàng)建 Windows 應(yīng)用程序
/t[arget]:library 創(chuàng)建庫(kù)程序集
/platform:<platform> 限制此代碼可以在其上運(yùn)行的平臺(tái);必須是 x86、Itanium、x64 或 anycpu。默認(rèn)為 anycpu
– 輸入文件 -
/autoref[+|-] 基于導(dǎo)入的命名空間和完全限定名稱自動(dòng)引用程序集(默認(rèn)情
況下為 on)
/lib:<path> 指定要在其中搜索引用的附加目錄
/r[eference]:<file list> 從指定的程序集文件引用元數(shù)據(jù) <file list>: <assembly name>[;<assembly name>...]
– 資源 -
/win32res:<file> 指定 Win32 資源文件(.res)
/res[ource]:<info> 嵌入指定的資源 <info>: <filename>[,<name>[,public|private]]
/linkres[ource]:<info> 將指定的資源鏈接到此程序集 <info>: <filename>[,<name>[,public|private]]
– 代碼生成 -
/debug[+|-] 發(fā)出調(diào)試信息
/fast[+|-] 禁用語(yǔ)言功能以使代碼更好地生成
/warnaserror[+|-] 將警告視為錯(cuò)誤
/w[arn]:<level> 設(shè)置警告等級(jí)(0-4)
– 雜項(xiàng) -
@<filename> 有關(guān)更多選項(xiàng),請(qǐng)閱讀響應(yīng)文件
/? 顯示幫助
/help 顯示幫助
/d[efine]:<symbols> 定義條件編譯符號(hào)
/nologo 不顯示編譯器版權(quán)標(biāo)志
/print[+|-] 提供 print() 函數(shù)
– 高級(jí) -
/codepage:<id> 使用指定的代碼頁(yè) ID 打開(kāi)源文件
/lcid:<id> 將指定的 LCID 用于消息和默認(rèn)代碼頁(yè)
/nostdlib[+|-] 不導(dǎo)入標(biāo)準(zhǔn)庫(kù)(mscorlib.dll)并將 autoref 默認(rèn)值更改為 off
/utf8output[+|-] 以 UTF-8 字符編碼形式發(fā)出編譯器輸出
/versionsafe[+|-] 為沒(méi)有標(biāo)記為“override”或“hide”的成員指定默認(rèn)值
創(chuàng)建 .exe 文件
先創(chuàng)建 JS 文件(C:\test\helloWorld.js),內(nèi)容如下:
var date = new Date(); print('Hello World! \nToday is ' + date );
接著我們進(jìn)行編譯:
C:\test>jsc helloWorld.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。保留所有權(quán)利。
你會(huì)驚訝的發(fā)現(xiàn),C:\test 目錄下多了個(gè) helloWorld.exe 文件,非常簡(jiǎn)單吧,呵呵
最后我們可以直接執(zhí)行 helloWorld.exe 文件:
C:\test>helloWorldHello World!Today is Fri Jun 3 23:13:20 UTC+8 2011
大功告成?。?
創(chuàng)建 .dll 文件
.dll 文件的創(chuàng)建也同樣非常簡(jiǎn)單:
package LibHW {
class HelloWorld {
function run() {
var date = new Date();
return 'Hello World! \nToday is ' + date;
}
}
}
編譯語(yǔ)句:
C:\test>jsc /t:library LibHW.js
對(duì)于生成的 LibHW.dll 文件,我們可以通過(guò)創(chuàng)建新的 .exe 文件(consumer.js –> consumer.exe)以導(dǎo)入模塊的方式調(diào)用(類似于 Python)。
先創(chuàng)建 consumer.js 文件:
import LibHW;var hw = new LibHW.HelloWorld();print(hw.run());
然后編譯 consumer.js 文件,執(zhí)行 consumer.exe:
C:\test>jsc consumer.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。保留所有權(quán)利。C:\test>consumerHello World!Today is Sat Jun 4 00:42:35 UTC+8 2011
當(dāng)然你還可以創(chuàng)建 windows 的應(yīng)用,上例中的 consumer.js 文件修改如下:
import System.Windows.Forms; // this has a MessageBox class
import LibHW;
var hw = new LibHW.HelloWorld();
MessageBox.Show(
hw.run(),
"Dude!",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation
);
編譯語(yǔ)句:
C:\test>jsc /t:winexe consumer.js
雙擊新生成的 consumer.exe 文件,哈哈,是不是很有成就感!
從上面的例子可以看到 JScript 的潛力無(wú)限,沒(méi)有做不到,只有想不到。
擴(kuò)展閱讀:
JScript 是由微軟開(kāi)發(fā)的活動(dòng)腳本語(yǔ)言,基于 ECMAScript 規(guī)范實(shí)現(xiàn)。Internet Explorer 中的 JavaScript,實(shí)際上是指 JScript。JScript 已被 Windows Script Host(WSH)支持(WSH 中的 JavaScript shell scripting:C:\> cscript jslint.js)。JScript 最新的版本(JScript.NET)基于 ECMAScript 4.0 ,并且可以在 .Net 環(huán)境下編譯。
.NET Framwork 中包含有 JScript 編譯器 :JScriptCompiler (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe),其可以將 JScript 文件編譯為一個(gè) .exe 或者 .dll 文件。
為了方便使用,我們可以將 JScriptCompiler 的路徑加入到環(huán)境變量(環(huán)境變量 –> 系統(tǒng)變量 –> Path)中。在 CMD 程序運(yùn)行窗口中直接調(diào)用命令 “jsc”,就可以看到編譯器相關(guān)的幫助選項(xiàng)。
復(fù)制代碼 代碼如下:
jsc [選項(xiàng)] <源文件> [[選項(xiàng)] <源文件>…]
JScript 編譯器選項(xiàng)
– 輸出文件 -
/out:<file> 指定二進(jìn)制輸出文件的名稱
/t[arget]:exe 創(chuàng)建控制臺(tái)應(yīng)用程序(默認(rèn))
/t[arget]:winexe 創(chuàng)建 Windows 應(yīng)用程序
/t[arget]:library 創(chuàng)建庫(kù)程序集
/platform:<platform> 限制此代碼可以在其上運(yùn)行的平臺(tái);必須是 x86、Itanium、x64 或 anycpu。默認(rèn)為 anycpu
– 輸入文件 -
/autoref[+|-] 基于導(dǎo)入的命名空間和完全限定名稱自動(dòng)引用程序集(默認(rèn)情
況下為 on)
/lib:<path> 指定要在其中搜索引用的附加目錄
/r[eference]:<file list> 從指定的程序集文件引用元數(shù)據(jù) <file list>: <assembly name>[;<assembly name>...]
– 資源 -
/win32res:<file> 指定 Win32 資源文件(.res)
/res[ource]:<info> 嵌入指定的資源 <info>: <filename>[,<name>[,public|private]]
/linkres[ource]:<info> 將指定的資源鏈接到此程序集 <info>: <filename>[,<name>[,public|private]]
– 代碼生成 -
/debug[+|-] 發(fā)出調(diào)試信息
/fast[+|-] 禁用語(yǔ)言功能以使代碼更好地生成
/warnaserror[+|-] 將警告視為錯(cuò)誤
/w[arn]:<level> 設(shè)置警告等級(jí)(0-4)
– 雜項(xiàng) -
@<filename> 有關(guān)更多選項(xiàng),請(qǐng)閱讀響應(yīng)文件
/? 顯示幫助
/help 顯示幫助
/d[efine]:<symbols> 定義條件編譯符號(hào)
/nologo 不顯示編譯器版權(quán)標(biāo)志
/print[+|-] 提供 print() 函數(shù)
– 高級(jí) -
/codepage:<id> 使用指定的代碼頁(yè) ID 打開(kāi)源文件
/lcid:<id> 將指定的 LCID 用于消息和默認(rèn)代碼頁(yè)
/nostdlib[+|-] 不導(dǎo)入標(biāo)準(zhǔn)庫(kù)(mscorlib.dll)并將 autoref 默認(rèn)值更改為 off
/utf8output[+|-] 以 UTF-8 字符編碼形式發(fā)出編譯器輸出
/versionsafe[+|-] 為沒(méi)有標(biāo)記為“override”或“hide”的成員指定默認(rèn)值
創(chuàng)建 .exe 文件
先創(chuàng)建 JS 文件(C:\test\helloWorld.js),內(nèi)容如下:
var date = new Date(); print('Hello World! \nToday is ' + date );
接著我們進(jìn)行編譯:
C:\test>jsc helloWorld.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。保留所有權(quán)利。
你會(huì)驚訝的發(fā)現(xiàn),C:\test 目錄下多了個(gè) helloWorld.exe 文件,非常簡(jiǎn)單吧,呵呵
最后我們可以直接執(zhí)行 helloWorld.exe 文件:
C:\test>helloWorldHello World!Today is Fri Jun 3 23:13:20 UTC+8 2011
大功告成?。?
創(chuàng)建 .dll 文件
.dll 文件的創(chuàng)建也同樣非常簡(jiǎn)單:
復(fù)制代碼 代碼如下:
package LibHW {
class HelloWorld {
function run() {
var date = new Date();
return 'Hello World! \nToday is ' + date;
}
}
}
編譯語(yǔ)句:
C:\test>jsc /t:library LibHW.js
對(duì)于生成的 LibHW.dll 文件,我們可以通過(guò)創(chuàng)建新的 .exe 文件(consumer.js –> consumer.exe)以導(dǎo)入模塊的方式調(diào)用(類似于 Python)。
先創(chuàng)建 consumer.js 文件:
import LibHW;var hw = new LibHW.HelloWorld();print(hw.run());
然后編譯 consumer.js 文件,執(zhí)行 consumer.exe:
C:\test>jsc consumer.jsMicrosoft (R) JScript Compiler version 8.00.50727for Microsoft (R) .NET Framework version 2.0.50727Copyright (C) Microsoft Corporation 1996-2005。保留所有權(quán)利。C:\test>consumerHello World!Today is Sat Jun 4 00:42:35 UTC+8 2011
當(dāng)然你還可以創(chuàng)建 windows 的應(yīng)用,上例中的 consumer.js 文件修改如下:
復(fù)制代碼 代碼如下:
import System.Windows.Forms; // this has a MessageBox class
import LibHW;
var hw = new LibHW.HelloWorld();
MessageBox.Show(
hw.run(),
"Dude!",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation
);
編譯語(yǔ)句:
C:\test>jsc /t:winexe consumer.js
雙擊新生成的 consumer.exe 文件,哈哈,是不是很有成就感!
從上面的例子可以看到 JScript 的潛力無(wú)限,沒(méi)有做不到,只有想不到。
擴(kuò)展閱讀:
相關(guān)文章
JavaScript時(shí)間復(fù)雜度和空間復(fù)雜度
這篇文章主要介紹了JavaScript時(shí)間復(fù)雜度和空間復(fù)雜度,時(shí)間復(fù)雜度和空間復(fù)雜度是衡量一個(gè)算法是否優(yōu)秀的標(biāo)準(zhǔn),通常我們比較兩個(gè)算法時(shí)會(huì)用預(yù)先估算和事后統(tǒng)計(jì),下文詳細(xì)介紹,需要的朋友可以參考一下2022-07-07
js回調(diào)函數(shù)仿360開(kāi)機(jī)
這篇文章主要為大家詳細(xì)介紹了js回調(diào)函數(shù)仿360開(kāi)機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
微信小程序自定義彈窗滾動(dòng)與頁(yè)面滾動(dòng)沖突的解決方法
這篇文章主要為大家詳細(xì)介紹了微信小程序自定義彈窗滾動(dòng)與頁(yè)面滾動(dòng)沖突的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
JavaScript+CSS實(shí)現(xiàn)模態(tài)框效果
這篇文章主要為大家詳細(xì)介紹了JavaScript+CSS實(shí)現(xiàn)模態(tài)框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
javascript對(duì)象的創(chuàng)建和訪問(wèn)
這篇文章主要為大家詳細(xì)介紹了javascript對(duì)象的創(chuàng)建和訪問(wèn)實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-03-03

