UMU WSH 教程
- 格式:docx
- 大小:72.02 KB
- 文档页数:42
<job>
<script language = "JScript">
var szBuf = "1 << 4 = " + (1 << 4);
领教完WSH调用COM的便利性后,我们还是说点正常的Hello World吧,有很多写法,先来VBS版:
'第一种
MsgBox "Hello WSH, 1", vbInformation, "Hello WSH"
'第二种
WScript.Echo "Hello WSH, 2"
'第三种
Dim objWSH
[UMU WSH教程](1) Hello WSH
[UMU WSH教程](2)输入
[UMU WSH教程](3)与C语言不一样的语法
WSH主要有五种可以运行的文件类型:
VBS - VBScript脚本文件
JS - JScript脚本文件
WSF - Windows脚本文件
VBE - VBScript已编码的脚本文件
我们知道MsgBox出现的时候脚本会停在MsgBox处,直到MsgBox被关闭,才继续向下解释。有时候我们需要在脚本运行一段时间后停止,这时候可以在脚本程序里计时,但如果因为有MsgBox弹出,那么它下面的代码无法被执行,所以也就无法计时。再或者,一个脚本有危险性,我们希望它在破坏系统的时候,可以有一个时间限制。这时候可以选择这个脚本文件的“属性-脚本”页,指定一个超时时间。
WScript.StdOut.Write( szBuf + ",您好!" );
WScript.StdOut.Write( "\r\n\r\n请按回车退出..." );
WScript.StdIn.ReadLine();
可能有人要问了,如果想输入密码呢?按我们现在这样输入会被看到,所以我们要想另外的办法了!如果是GUI的话,UMU建议用IE来说输入窗口,这样既可以实现星号密码输入,又可以把输入框做得很漂亮,但是这个还是等到说“InternetExplorer.Application”对象的时候再说吧。先说CUI版的密码输入,VBS版,保存为Password.VBS:
break.JS,代码如下:
Outer:
for( var i = 0; i < 10; ++i )
{
for( var j = 0; j < 10; ++j )
{
break Outer;
WScript.Echo( 'Inner' );
}
WScript.Echo( 'Outter' );
}
WScript.Echo( 'End' );
[UMU WSH教程](2)输入
目前,UMU眼中C是最标准的编程语言,所以遇到任何语言都要拿来和C比较一下!当然ASM是例外,因为ASM是标准他老爸!
1、VBS不区分大小写,JS有区分,UMU觉得好的语言就应该区分大小写,比如说UMU眼中的标准——C语言,所以VBS在这点上就不如JS。
2、VBS的And运算符和C语言的&一样,而且VBS没有和C语言的&&一样的运算符,JS则同时包含&&和&!同理,VBS里也只有对应|的Or,没有||,JS有||也有|。
Set objSPW = Nothing
好了,相信JS版不用UMU来写了,按照前面的例子翻译一下~大家可以参考一下这篇文章:“如何使用InputBox来屏蔽密码?”。
[UMU WSH教程](3)与C语言不一样的语法2007年03月22日星期四15:39学习WSH的理由
[UMU WSH教程](1) Hello WSH
UMU用Logic.VBS来测试:
If 0 = 1 And vbOK = MsgBox("这里会被执行!", vbOKCancel, "[UMU WSH教程](3)与C语言不一样的语法") Then
MsgBox "这里不会被执行!"
End If
If 0 = 0 Or vbOK = MsgBox("这里会被执行!", vbOKCancel, "[UMU WSH教程](3)与C语言不一样的语法") Then
[UMU WSH教程](1) Hello WSH2007年03月21日星期三15:59学习WSH的理由
一般测试语言总要从Hello Wolrd例子开始,而且一般都是打印一个字符串,为了突出WSH的魅力,UMU打算从“语音Hello Wolrd”开始。就是说,我们的第一个程序不是冒出个黑黑的Console窗口(当然更不是DOS虚拟机窗口),也不是一个对话框,而是从您的耳机或者音箱说出一段话。
</script>
<script language = "VBScript">
MsgBox szBuf, 64, "[UMU WSH教程](4)WSH相关文件"
</script>
</job>
因为VBScript没有位运算符,所以用JScript来做位运算,但JScript又没有MsgBox函数,所以又用VBScript来显示,这个例子同时运用了两种语言。
接着看CUI版,这次VBS和JS都支持了!下面代码保存为InputCUI.VBS:
Dim szBuf
WScript.StdOut.Write "输入您的名字:"
szBuf = WScript.StdIn.ReadLine
MsgBox szBuf & ",您好!", vbInformation, "[UMU WSH教程](2)输入"
JSE - JScript已编码的脚本文件
其他相关文件类型:
WSH - Windows Script Host设置文件
WSC - Windows脚本部件
VBE/JSE编码文件可以用微软的ScrEnc.exe来生成,对高手来说这只是浪费效率的做法,对不那么高的人民群众来说,这可以当做加密,保护自己的代码。不过网络可以找到解码程序,所以对低手来说解码也很简单。总之一句话:脚本加密都不可靠,因为都是可逆的!
MsgBox "这里一定会被执行!", vbInformation, "[UMU WSH教程](3)与C语言不一样的语法"
End If
如果用C语言改写,并用&&替换And,||替换Or,则if里的对话框是不会被执行的,而在本例里会被执行。
3、在C语言里,break则能跳出一层循环,如果要跳出更多层只能用goto,C++我没试过,大概也一样不行,Java似乎可以,JS的话,我可以肯定它行!
//第一种
WScript.Echo( "Hello WSH, 2" );
//第二种
var objWSH = new ActiveXObject( "WScript.Shell" );
objWSH.Popup( "Hello WSH, 3", 0, "Hello WSH", 64 );
delete objWSH;
上段代码运行后只会看到一个End对话框。
4、再来,VBS/JS都不支持用goto随意跳转,VBS里goto唯一合法的用法是:On Error GoTo 0;JS中goto是为将来预留的关键字,在WSH 5.6版本中还没什么用。
当然和C不一样的语法很多,这里只是举几个比较有代表性的。
[UMU WSH教程](4)WSH相关文件2007年03月23日星期五11:46学习WSH的理由
Dim szBuf
szBuf = InputBox( "输入您的名字:", "[UMU WSH教程](2)输入", "UMU" )
MsgBox szBuf & ",您好!", vbInformation, "[UMU WSH教程](2)输入"
JS可以就没这么简单了,就像它没有MsgBox函数一样,它也没有InputBox函数。当然方法是有的,不过现在先不说,因为比较复杂,等说到“InternetExplorer.Application”对象的时候再说吧。
[UMU WSH教程](2)输入2007年03月22日星期四11:58在前面的“[UMU WSH教程](1) Hello WSH”,UMU已经说过输出了,现在来说输入。
先看GUI版,VBS有从VB移植过来的InputBox函数,所以输入很简单,就是调用一下这个函数,下面代码保存为Input.VBS:
Set objWSH = CreateObject( "WScript.Shell" )
objWSH.Popup "Hello WSH, 3", 0, "Hello WSH", vbInformation
Set objWSH = Nothing
注意了,JS版没有MsgBox函数,所以VBS的第一种方法JS里没有:
如果您的系统是正确安装的XP/2003,那么运行后可以听到程序的发音,如果当前发音员是Microsoft Simplified Chinese,那么您会听到“中括号UMU WSH教程中括号您好WSH”;如果是Microsoft Sam/Mary/Mike,那么会听到“UMU WSH WSH”。