本文要点:
- MSSCRIPT.OCX组件只有x86版本,所以要在x64系统下运行,请使用云盘中的x86版本WScript安装程序。
- 将以下示例代码存为js文件,将其拖动到x86版本的WScript.exe或CScript.exe程序上即可以运行。
- 示例 Microsoft Script Control 1.0 的Error和Timeout两个事件的使用。
- 示例 Microsoft Script Control 1.0 的Run方法,Modules模块集合的使用等等。
- 另外 Microsoft Script Control 1.0 的中英文参考文档已经转为CHM格式,参考云盘的 MSSCRIPT.chm 等文件。
发现盗贴现象好严重,估计这文章一发表就注定被转抄的命运了,打个标记:By @Jimbowhy @源地址:
http://blog.csdn.net/winsenjiansbomber/article/details/41376999
同时,笔者绝对有理由相信,在文章的添加 mywife.cc 这样的字眼会大大增加本文的浏览量!哈哈:) 也算是对脚本应用的一个普及推广啦!
/* MSSCRIPT.OCX Microsoft Script Control 1.0 is ready for x86 system * it may site in c:\Windows\SysWOW64\msscript.ocx * and must run x86 version WScript.exe to execute this script */ //var sc = new ActiveXObject("MSScriptControl.ScriptControl"); var sc = WScript.CreateObject("MSScriptControl.ScriptControl","ScriptControl_"); sc.Language = "VBScript"; sc.AllowUI = true; sc.Timeout = 3000; /* This may occurs 80004005 before Language setted: * The operation could not be completed * because the script engine has not been initialized to a valid language. */ sc.AddObject("WScript", WScript); //sc.addCode('On Error Resume Next'); // add code to Global Module! //sc.AddCode('x=1/0'); // Execute right now and causes Error event // Delay sub about 5s in my 1.6Ghz 4 Cores CPU, so it will cause 3s Timeout event! var vbs = 'Sub Main(msg) : For i = 1 to 5000000 Step 1 : x=x+i : Next : MsgBox msg&vbCrLf&"Delay Done:"&i : End Sub'; //sc.Eval(vbs); // Error, just expression to Eval sc.AddCode(vbs); sc.Run("Main","Hi, Main"); //var vbs = 'Function Main(msg) : MsgBox(msg) : End Function'; // Why not ByVal msg As String? var vbs = 'Sub Main(msg) : MsgBox("Modules:"+msg) : End Sub'; // just Public not Private member var m = sc.Modules.Add("Module1"); m.AddCode(vbs); m.Run("Main","Hi, Main"); sc.Language = "JScript"; sc.AddObject("WScript", WScript); // reset when Language changed sc.AddCode('WScript.Echo("Hi,JS");'); /* Events for Script Control * Timeout: Occurs when the time specified in the Timeout property has elapsed, * and a user has selected End from the resulting dialog box. */ function ScriptControl_Timeout(){ WScript.Echo("Event: ScriptControl Timeout "+sc.Timeout); } /* Error: An Error event can occur during event sinking or during a direct call * to the scripting engine when calling into an object returned by the CodeObject * property. The error argument is the number of the run-time error that occurred. */ function ScriptControl_Error(){ var msg = "Event: ScriptControl Error " + "\nLine:" + sc.Error.Line + "\nColumn:" + sc.Error.Column + "\nNumber:" + sc.Error.Number + "\nDescription:" + sc.Error.Description; sc.Error.Clear(); WScript.Echo(msg); }
关于Windows Scripting Host这个很实用的古董编程技术,Jimbowhy 收集了大量收藏级的资料,请到云盤免费下载:
http://pan.baidu.com/s/1i3Br5OD
包括:
Advanced VBSript for Microsoft Windows Administrators.pdf
Advanced Windows Script Host Developers Guide (2003) .pdf
IVIEWERS.DLL
Microsoft VBScript Step by Step.pdf
Microsoft Windows脚本技术.CHM
OLEVIEW.EXE
scd56chs.exe JScript & VBScript 官方参考手册 5.6中文版
script56.chm JScript & VBScript 官方参考手册 5.6 e文版
scripten.5.7.0.16535.win2k.exe JScript & VBScript 安装程序
scripten.5.7.0.16535.win2k3 .exe
scripthost20dev.chm Microsoft Windows Script Host 2.0 Developer’s Guide / Günter Born.<
script_repository10.chm System Administration Scripting Guide Script RepositoryVersion 1.0, May 2002
VBScript Programmer‘s Reference, 3rd Edition.pdf
VBScript程序员参考手册.pdf
VBS_常用脚本.docx
sct10en.exe Microsoft Script Control 1.0
MSSCRIPT.chm Microsoft Script Control 1.0 英文手册的CHM格式
MSSCRIPT-CHS.chm Microsoft Script Control 1.0 中文手册的CHM格式