百度空间 | 百度首页 
               
 
查看文章
 
[UMU WSH 教程](1) Hello WSH
2007年03月21日 星期三 15:59

学习 WSH 的理由

  一般测试语言总要从 Hello Wolrd 例子开始,而且一般都是打印一个字符串,为了突出 WSH 的魅力,UMU 打算从“语音 Hello Wolrd”开始。就是说,我们的第一个程序不是冒出个黑黑的 Console 窗口(当然更不是 DOS 虚拟机窗口),也不是一个对话框,而是从您的耳机或者音箱说出一段话。

  把下面代码保存为 Hello.VBS:

Dim objTTS

Set objTTS = CreateObject( "SAPI.SpVoice" )

objTTS.Speak "[UMU WSH 教程]您好 WSH!", 0

Set objTTS = Nothing

  这个代码里只有 4 行,必须的只有 2 行,头尾的 2 行去掉也可以。

  如果您的系统是正确安装的 XP/2003,那么运行后可以听到程序的发音,如果当前发音员是 Microsoft Simplified Chinese,那么您会听到“中括号 UMU WSH 教程中括号您好 WSH”;如果是 Microsoft Sam/Mary/Mike,那么会听到“UMU WSH WSH”。

  大家可以找到 "%ProgramFiles%\Common Files\Microsoft Shared\Speech\sapi.cpl",运行看看,这个控制面板可以更改默认发音员,如果是 Sam/Mary/Mike 这三个老美,他们是不懂说中文的,改成“Microsoft Simplified Chinese” 就可以说中文了,不过默认安装的系统应该是没有,装了一些应用后才会有,比如“金山词霸”(金山词霸会发音只是用了微软的 TTS 而已,大家也可以用,这个功能很容易实现的)。

  再看一下 JS 版的,保存为 Hello.JS:

var objTTS = new ActiveXObject( "SAPI.SpVoice" );

objTTS.Speak( "[UMU WSH 教程]您好 WSH!", 0 );

delete objTTS;

  这个代码里只有 3 行,必须的只有 2 行,最后一行去掉也可以。

  领教完 WSH 调用 COM 的便利性后,我们还是说点正常的 Hello World 吧,有很多写法,先来 VBS 版:

' 第一种
MsgBox "Hello WSH, 1", vbInformation, "Hello WSH"

' 第二种
WScript.Echo "Hello WSH, 2"

' 第三种
Dim objWSH

Set objWSH = CreateObject( "WScript.Shell" )
objWSH.Popup "Hello WSH, 3", 0, "Hello WSH", vbInformation

Set objWSH = Nothing

  注意了,JS 版没有 MsgBox 函数,所以 VBS 的第一种方法 JS 里没有:

// 第一种
WScript.Echo( "Hello WSH, 2" );

// 第二种
var objWSH = new ActiveXObject( "WScript.Shell" );
objWSH.Popup( "Hello WSH, 3", 0, "Hello WSH", 64 );
delete objWSH;

  WSH 有两个宿主,一个是 GUI 版的 WScript.exe,另一个是 CUI 的 CScript.exe,直接双击 VBS/JS 文件默认是使用 WScript.exe,选择文件右键菜单里的“在命令提示符中打开”则使用 CScript.exe。这两个宿主的 WScript.Echo 是不同的,请注意比较。

  所谓宿主就是用来解释脚本文件的程序。脚本程序不是可执行文件,它需要别的程序来解释。如果宿主程序被删除或者文件关联错误,都可能造成脚本程序无法运行,所以对初学者应该使用一个完好的系统,不然可能会有很多麻烦。比如,上个世纪有个软件叫“超级结巴”的,它就把 VBS 的文件关联给改了,结果 VBS 程序都无法运行了,UMU 正是发现这一点才连 JS 一块学了。

  好吧,暂时就说到这里,语法 UMU 是不打算说了,有兴趣百度一下 VBS 教材应该有很多~


类别:wsh 专栏 | 添加到搜藏 | 浏览() | 评论 (17)
 
最近读者:
 
网友评论:
1
2007年03月21日 星期三 16:14 | 回复
呵呵,有时候可以用来做简单的专杀
 
2
2007年03月21日 星期三 16:39 | 回复
同意1楼意见。
 
3
2007年03月21日 星期三 20:50 | 回复
怎么能听到中文
 
4
2007年03月22日 星期四 09:46 | 回复
"%ProgramFiles%\Common Files\Microsoft Shared\Speech\sapi.cpl" 这个控制面板可以更改默认发音员,如果是 Sam/Mary/Mike 这三个老美,他们是不懂说中文的,改成“Microsoft Simplified Chinese”就可以说中文了,不过默认安装的系统应该是没有,装了一些应用后才会有,比如“金山词霸”(金山词霸会发音只是用了微软的 TTS 而已,大家也可以用,这个功能很容易实现的)。
 
5
2007年03月22日 星期四 13:49 | 回复
多谢!
 
6
2007年03月30日 星期五 22:31 | 回复
唉,M$的东东方便是方便,不过让人用起来没底,呵呵。 相比起来,还是习惯linux下的脚本,sh、python、perl……任由我选择。
 
7
2007年03月31日 星期六 12:56 | 回复
即使有代码如果没看完我觉得一样是没底
 
9
2007年06月09日 星期六 00:17 | 回复
 
10
2007年06月09日 星期六 01:37 | 回复
楼上的两位,千万别把百度当白痴,别人也会当您们是白痴的!
 
11
2007年06月09日 星期六 15:30 | 回复
我很想学习WSH 可是发现 那些 内置对象什么的都不知道怎么用 . 比如这句Set objTTS = CreateObject( "SAPI.SpVoice" ) 为什么要用set 然后这个 CreateObject 又是什么东西 SAPI.SpVoice 这个又是什么东西 .这些 在网上也查不到啊 ..~..~.. 你当初学这的时候 相关资料都是在哪找的 啊 ~
 
13
2007年06月09日 星期六 17:35 | 回复
先了解原理,然后在注册表里找,找到服务程序,用工具查看 TypeLib,请看后面的教材里有说
 
14
2007年06月09日 星期六 22:40 | 回复
你好 .UMU大哥 . 今天在网上看到一段代码.为什么点击是后 .会提示activex部件不能创建对象 ..难道是这段代码写错了 还是什么其他原因啊 . Set objShell = CreateObject("Wscript.Shell") intMessage = Msgbox("Would you like to apply for access to this resource?", _ vbYesNo, "Access Denied") If intMessage = vbYes Then objShell.Run("http://www.microsoft.com") Else Wscript.Quit End If
 
15
2007年06月09日 星期六 23:35 | 回复
那是因为您的系统上没有注册 Wscript.Shell 对象,Windows 95 之后,一般默认安装的 Windows 都应该有的,您的系统有问题,去微软下载 WSH 5.6 装上就可以了
 
16
2007年09月29日 星期六 13:38 | 回复
最近用了一些的VBS了,不过还真没好好去搞懂他的一些原理,哈哈,现在来你这里学习了~加油UMU~
 
17
2008年05月29日 星期四 12:06 | 回复
太强大了...
 
18
2008年06月07日 星期六 18:34 | 回复
hao jiejue le wo de ma fan xiexie
 
19
2008年07月29日 星期二 16:13 | 回复
学习
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu