`
hanbaobao
  • 浏览: 20697 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用 JScript 创建 .exe 或 .dll 文件

阅读更多

什么是  JS cript?

JScript   是由微软 开发 的活动脚本语言,基于 ECMAScript 规范实现。In ternet   Explorer 中的  Java Script,实际上是指 JScript。JScript 已被  Windows   Script Host(WSH)支持(WSH 中的 JavaScript shell scripting:C :\>   cscript jslint . js )。JScript 最新的版本(JScript.NET)基于 ECMAScript 4.0 ,并且可以 在 .Net 环境下编译。

.NET Framwork 中包含有 JScript 编译器 :JScriptCompiler   (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe),其可以将 JScript  文件 编译为一个 .exe 或者 .dll 文件。

为了方便使用,我们 可以将 JScriptCompiler 的路径 加入到环境变量(环境变量 –>  系统 变量 –> Path)中。在 CMD 程序运行窗口中直接调用命令 “jsc”,就可以看到编译器相关的帮助选项。

jsc [选项] <源文件> [[选项] <源文件>…]

JScript 编译器选项

– 输出文件 -$$30 ^$^ /out:<file> 指定二进制输出文件的名称
/t[arget]:exe 创建控制应用 程序(默认)
/t[arget]:winexe 创建 Windows 应用程序
/t[arget]:library 创建库程序集
/platfor m:<platform> 限制此代码可以在其上运行的平台必须 是 x86、Itanium、x64   或 anycpu。默认为 anycpu

  输入 文件 -
/autoref[+|-] 基于导入的命名空间 和完全限定名称自动引用程序集(默认情
况下为 on)
/lib:<path> 指定要在其中搜索 引用的附加目录
/r[eference]:<file list> 从指定的程序集文件引用元数据   <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[+|-] 发出调试信息
/fast[+|-] 禁用语言功能 以使代码更好地生成
/warnaserror[+|-] 将警告 视为错误
/w[arn]:<level> 设置警告等级(0-4)

– 杂项 -
@<filename> 有关更多选项,请阅读响应文件
/? 显示帮助
/help 显示帮助
/d[efine]:<symbols>  定义 条件编译符号
/nologo 不显示编译器版权标志
/print[+|-]  提供   print() 函数

– 高级 -
/codepage:<id> 使用指定的代码页 ID 打开源 文件
/lcid:<id> 将指定的 LCID 用于消息和默认代码页
/nostdlib[+|-] 不导入标准 库(mscorlib.dll)并将 autoref 默认值更改为 off
/utf 8output[+|-] 以 UTF-8 字符编码形式发出编译器输出
/versionsafe[+|-] 为没有标记为“override”或“hide”的成员指定默认值

创建 .exe 文件

先创建 JS 文件(C:\test\helloWorld.js),内容 如下:

var date = new Date();
print( 'Hello World! \nToday is ' + date );

 

接着我们进行编译:

C
:\
test
>
jsc helloWorld
.
js

Microsoft ( R ) JScript Compiler version 8 . 00 . 50727
for Microsoft ( R ) . NET Framework version 2 . 0 . 50727
Copyright ( C ) Microsoft Corporation 1996 - 2005 。保留所有权利。

你会惊讶的发现,C:\test 目录下多了个 helloWorld.exe 文件,非常简单吧,呵呵

最后我们可以直接执行   helloWorld.exe 文件:

C
:\
test
>
helloWorld

Hello World !
Today is Fri Jun 3 23 : 13 : 20 UTC + 8 2011

大功告成!!

创建 .dll 文件

.dll 文件的创建也同样非常简单:

package LibHW {
class HelloWorld {
function run() {
var date = new Date();
return ' Hello World! \nToday is ' + date;
}
}
}

编译语句:

C
:\
test
>
jsc 
/
t
:
library 
LibHW
.
js

对于生成的 LibHW.dll 文件,我们可以通过创建新的 .exe 文件(consumer.js –> consumer.exe)以导入模块的方式调用(类似于  Python )。

先创建 consumer.js 文件:

import
 
LibHW
;

var hw = new LibHW . HelloWorld ();
print ( hw . run ());

然后编译 consumer.js 文件,执行 consumer.exe:

C
:\
test
>
jsc consumer
.
js

Microsoft ( R ) JScript Compiler version 8 . 00 . 50727
for Microsoft ( R ) . NET Framework version 2 . 0 . 50727
Copyright ( C ) Microsoft Corporation 1996 - 2005 。保留所有权利。

C
:\ test > consumer

Hello World !
Today is Sat Jun 4 00 : 42 : 35 UTC + 8 2011

当然你还可以创建 windows 的应用,上例中的 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
);

编译语句:

C
:\
test
>
jsc 
/
t
:
winexe consumer
.
js

双击新生成的 consumer.exe 文件,哈哈,是不是很有成就感!

从上面的例子可以看到 JScript 的潜力无限,没有做不到,只有想不到。

扩展阅读:

  • 《Make your javascript a Windows .exe》
  • 《JavaScript shell scripting》

原文:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/

分享到:
评论

相关推荐

    使用 JScript 创建 .exe 或 .dll 文件的方法

    什么是 JScript? JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现。Internet Explorer 中的 JavaScript,实际上是指 JScript。JScript 已被 Windows Script Host(WSH)支持(WSH 中的 JavaScript ...

    pdflib.dll 7.0.5

    Adobe Acrobat (Mac 或 Windows)的 PDFlib 块插件交互式创建块,并使用 PPS 自动 进行填充。该插件包含在 PPS 中 如何使用 PDFlib? PDFlib 可在多种平台上使用,包括 Unix、Windows、Mac 和基于 EBCDIC 的系统...

    DotNetToJScriptMini:DotNetToJScript的简化版本,用于创建一个JScript文件,该文件从内存中加载.NET v2程序集

    DotNetToJScript的简化(抽象)版本,用于创建从内存加载.NET v2程序集的JScript文件。 我创建此脚本是为了简化对DotNetToJScript工作原理的理解。 用法 [*] Usage: DotNetToJScriptMini.exe &lt;ASSEMBLY&gt; ...

    NET公共类库[转发]

    如:cmd.exe 公历/农历类 CNDate.cs 公历、农历、星座、气节等相关转换 日期格式处理类 DateUtil.cs 日期格式、闰月、计算当月天数等转换 文件实用类 FileUtil.cs 读取、备份、创建等文件操作 上传类 HtmlInputFile...

    让脚本也能输出调试信息

    下载之后只有一个文件:VB6OCX.CDebug.dll 这个控件是用 VB6 编译的,需要系统里有 VB6 的运行环境 msvbvm60.dll VB6 没有考虑的 Win10 的变态级安全要求, 所以这个控件只能在 WinXP 和 Win7 里用,不能在 Win10...

    C#微软培训资料

    17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 ...

    FastReport.v4.7.147 for.Delphi.BCB.Full.Source中文修正企业版

    在准备创建报表前,用户可以使用这一表格来修改参数,而且可以不受限制地使用它。FastReport使用同一个设计工具来创建对话框,这一设计工具带有对话框控件的标准集:按钮,编辑框,复选框等等。 FastReport提供了...

    c#学习笔记.txt

    使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。...

    IIS6.0 IIS,互联网信息服务

    以及引入了命令行工具 Appcmd.exe ,给 Web 服务器的日常管理、监视和配置提供了除图形接口外的另一种方式,更为简单、高效。 同Windows XP一样,在Windows Vista的默认设置下,IIS (Internet 信息服务) 7.0未予安装...

    donut:生成x86,x64或AMD64 + x86位置无关的shellcode,该shellcode从内存中加载.NET程序集,PE文件和其他Windows有效负载,并使用参数运行它们

    Donut是与位置无关的代码,可在内存中执行VBScript,JScript,EXE,DLL文件和dotNET程序集。 Donut创建的模块既可以从HTTP服务器进行登台,也可以直接嵌入到加载程序本身中。 可以选择使用Chaskey块密码和128位随机...

    游戏画面就弹出内存不能为read修复工具

    解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:...

    FastReport.v4.8.36 for.Delphi.BCB.Full.Source中文修正版

    在准备创建报表前,用户可以使用这一表格来修改参数,而且可以不受限制地使用它。FastReport使用同一个设计工具来创建对话框,这一设计工具带有对话框控件的标准集:按钮,编辑框,复选框等等。 FastReport提供了...

    错误类型:Provider (0x80004005)未指定的错误 的一个处理方法

    打开数据库的同时,系统会在临时文件夹 %SystemRoot%/temp/ 下创建临时文件,而 % SystemRoot%/temp/ 的权限不够 解决:%SystemRoot%/temp/ 的权限加上(IUSER_电脑名的读写) 2、如果一般未指定的错误,还有个办法,...

    .Net十大必备工具之一

    C#中XML格式的文档注释好处:Visual Studio会显示这些注释内容,还有比如NDoc或微软的文档工具也可以用这些注释生成有良好外观的帮助文件。 4. Sandcastle Sandcastle。这是一个管理类库的文档编译器。它还可通过...

    .Net十大必备工具之二

    C#中XML格式的文档注释好处:Visual Studio会显示这些注释内容,还有比如NDoc或微软的文档工具也可以用这些注释生成有良好外观的帮助文件。 4. Sandcastle Sandcastle。这是一个管理类库的文档编译器。它还可通过...

    js使用小技巧

    创建元素 document.createElement("SPAN"); 根据鼠标获得元素: document.elementFromPoint(event.x,event.y).tagName=="TD document.elementFromPoint(event.x,event.y).appendChild(ms) 窗体图片 document...

Global site tag (gtag.js) - Google Analytics