脚本 MsAgent组件 微软精灵 揪出系统自带的宠物

所属分类: 脚本专栏 / vbs 阅读数: 1938
收藏 0 赞 0 分享
复制代码 代码如下:

'On Error Resume Next
strAgentName = "Merlin"
strAgentPath = "c:\windows\msagent\chars\" & strAgentName & ".acs"
ScriptComplete=0

Set objAgent = WScript.CreateObject("Agent.Control.2","agent_")
objAgent.Connected = True
objAgent.Characters.Load strAgentName, strAgentPath
Set objCharacter = objAgent.Characters(strAgentName)
objCharacter.LanguageID = &H409
'objCharacter.LanguageID = &H804 '菜单为中文,但微软没有开发中文语音

objCharacter.MoveTo 0, 700
objCharacter.Show
objCharacter.GestureAt 900, 700
wsh.sleep 2000
objCharacter.MoveTo 900, 700
wsh.sleep 3000
objCharacter.GestureAt 900, 100
wsh.sleep 2000
objCharacter.MoveTo 900, 100
wsh.sleep 3000

objCharacter.Speak("Good " & GetTimeOfDay())
objCharacter.Speak("I love you")
objCharacter.speak("Hello, how are you?")
objCharacter.speak("I will show for you!")
wsh.sleep 10000

'边表演边说明
show "Acknowledge", "点头"
show "Alert", "伸直并抬起眉毛"
show "Announce", "举起喇叭并吹奏"
show "Blink", "眨眼睛"
show "Confused", "挠头"
show "Congratulate", "展示奖品"
show "Congratulate_2", "鼓掌"
show "Decline", "抬起手并摇头"
show "DoMagic1", "举起魔法棍"
show "DoMagic2", "放下魔法棍,出现云彩"
show "DontRecognize", "捂住耳朵"
show "Explain", "将两臂向两侧展开"
show "GestureDown", "向下的手势"
show "GestureLeft", "向左的手势"
show "GestureRight", "向右的手势"
show "GestureUp", "向上的手势"
show "GetAttention", "向前倾并敲击"
show "GetAttentionContinued", "向前倾并再次敲击"
show "GetAttentionReturn", "返回正常姿势"
ShowLoop "Hearing_1", "耳朵伸长(循环的动画)"
ShowLoop "Hearing_2", "头向左倾(循环的动画)"
ShowLoop "Hearing_3", "头向左转(循环的动画)"
ShowLoop "Hearing_4", "头向右转(循环的动画)"
show "Hide", "消失在帽子下面"
show "Idle1_1", "喘口气"
show "Idle1_2", "向左看并眨眼"
show "Idle1_3", "向右看"
show "Idle1_4", "从上往右看并眨眼"
show "Idle2_1", "看看魔法棍并眨眼"
show "Idle2_2", "手握手并眨眼"
show "Idle3_1", "打呵欠"
ShowLoop "Idle3_2", "入睡(循环的动画)"
show "LookDown", "向下看"
show "LookDownBlink", "眨眼向下看"
show "LookDownReturn", "返回正常姿势"
show "LookLeft", "向左看"
show "LookLeftBlink", "眨眼向左看"
show "LookLeftReturn", "返回正常姿势"
show "LookRight", "向右看"
show "LookRightBlink", "眨眼向右看"
show "LookRightReturn", "返回正常姿势"
show "LookUp", "向上看"
show "LookUpBlink", "眨眼向上看"
show "LookUpReturn", "返回正常姿势"
show "MoveDown", "向下飞行"
show "MoveLeft", "向左飞行"
show "MoveRight", "向右飞行"
show "MoveUp", "向上飞行"
show "Pleased", "微笑并把手合在一起"
show "Process", "搅拌大锅"
ShowLoop "Processing", "搅拌大锅(循环的动画)"
show "Read", "打开书,阅读并查寻"
show "ReadContinued", "阅读并查寻"
show "ReadReturn", "返回正常姿势"
ShowLoop "Reading", "阅读(循环的动画)"
show "RestPose", "正常姿势"
show "Sad", "悲伤的表情"
show "Search", "观察水晶球"
ShowLoop "Searching", "观察水晶球(循环的动画)"
show "Show", "从帽子中出现"
show "StartListening", "手靠向耳朵"
show "StopListening", "手捂在耳朵上"
show "Suggest", "显示电灯泡"
show "Surprised", "显得很吃惊"
show "Think", "用手托住下巴向上看"
ShowLoop "Thinking", "用手托住下巴向上看(循环的动画)"
show "Uncertain", "向前倾并抬起眉毛"
show "Wave", "摆手"
show "Write", "打开书,书写并查寻"
show "WriteContinued", "书写并查寻"
show "WriteReturn", "返回正常姿势"
ShowLoop "Writing", "书写(循环的动画)"


actions=Array("Acknowledge","Alert","Announce","Blink","Confused","Congratulate","Congratulate_2","Decline","DoMagic1","DoMagic2","DontRecognize","Explain","GestureDown","GestureLeft","GestureRight","GestureUp","GetAttention","GetAttentionContinued","GetAttentionReturn","Hide","Idle1_1","Idle1_2","Idle1_3","Idle1_4","Idle2_1","Idle2_2","Idle3_1","LookDown","LookDownBlink","LookDownReturn","LookLeft","LookLeftBlink","LookLeftReturn","LookRight","LookRightBlink","LookRightReturn","LookUp","LookUpBlink","LookUpReturn","MoveDown","MoveLeft","MoveRight","MoveUp","Pleased","Process","Read","ReadContinued","ReadReturn","RestPose","Sad","Search","Show","StartListening","StopListening","Suggest","Surprised","Think","Uncertain","Wave","Write","WriteContinued","WriteReturn")

'顺序表演
for each action in actions
Set objRequest = objCharacter.Play(action)
Do While objRequest.Status > 0
WScript.Sleep 100
Loop
next

'随机表演
do
Randomize
i=Int((UBound(actions) + 1) * Rnd)
action = actions(i)
Set objRequest = objCharacter.Play(action)
Do While objRequest.Status > 0
WScript.Sleep 100
Loop
loop

Do
WScript.Sleep 1000
Loop Until ScriptComplete


Function GetTimeOfDay()
h = Hour(Now)
If h < 12 Then
TimeOfDay = "Morning"
ElseIf h < 18 Then
TimeOfDay = "Afternoon"
Else
TimeOfDay = "Evening"
End If
GetTimeOfDay = TimeOfDay
End Function

Sub Show(action,prompt)
objCharacter.Speak(action)
wsh.sleep 300
objCharacter.Think(prompt)
wsh.sleep 200
Set objRequest = objCharacter.Play(action)
Do While objRequest.Status > 0
WScript.Sleep 100
Loop
end sub

Sub ShowLoop(action,prompt)
objCharacter.Speak(action)
objCharacter.Think(prompt)
objCharacter.Play(action)
wsh.sleep 5000
objCharacter.stop
end sub

Sub agent_dblclick(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
if MsgBox("确定要退出吗?",33,"确认退出")-2 then
objCharacter.StopAll
WScript.Quit
end if
End Sub

Sub agent_DragStart(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
objCharacter.Speak("Shit! Don't drag me!")
wsh.sleep 5000
End Sub

其实我们调用了系统里的MsAgent组件。Microsoft Agent是微软公司发布的一项代理软件开发技术,我们知道,在Office帮助系统中有一种叫作Office助手的代理软件,但其只允许Office各个组件调用。而Agent动画人物可由任何Windows程序调用;Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。如果电脑系统中安装有Agent语音识别引擎,用户可以通过声卡、麦克风与MsAgent交谈。

介绍MsAgent的帖子早已有之,这里再次利用MsAgent,给出这个好玩的脚本,聊以活跃气氛,吸引大家对vbs的兴趣,希望大家积极发帖
更多精彩内容其他人还在看

vbscript Split函数用法详解(字符串转数组函数)

本文详细介绍了vbscript中split函数的用法,有关split函数的一些实例,vbscript中split函数的语法介绍,有需要的朋友参考下
收藏 0 赞 0 分享

VBS实现将Excel表格保存为txt文本

希望能够找到个能给excel表另存为TXT的VBS代码,虽然另存为可以选择,但还是需要直接VBS执行这一步另存为TXT格式的,应该如何写代码呢
收藏 0 赞 0 分享

vbs解决处理TXT文本数据相关问题实现代码

使用vbs处理txt数据时,会遇到一些问题,本文将提供详细的解决方法,希望可以帮助你们
收藏 0 赞 0 分享

关于vbs 生成静态页面过程中出现的问题

访问某个aspx页面,然后把服务器返回的页面以filestream 的形式保存为html格式,接下来将介绍实现代码
收藏 0 赞 0 分享

dim函数第三个参数设置截取字符的长度问题

dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题,提示无效的过程调用或参数,本文详细介绍如何解决
收藏 0 赞 0 分享

邪恶的eval和new Function使用介绍

这些代码可以干什么?可以肯定的是可以干很多猥琐的事
收藏 0 赞 0 分享

WScript.Shell对象SpecialFolders属性未公开文档分享

WshShell对象的SpecialFolders属性返WshSpecialFolders 对象,该对象是一个特殊文件夹集合,其中包含整套Windows特殊文件夹
收藏 0 赞 0 分享

用VBS修改(设置)系统时间和日期的代码

用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题。那么怎样用 VBS 修改系统的时间呢
收藏 0 赞 0 分享

VBS For Next循环的一些细节

For Next 语句是 VBS 中常用的循环语句,你可能已经用过无数次 For Next 循环,但是你是否注意过它的一些细节呢
收藏 0 赞 0 分享

VBS For Next循环的陷阱分享

在《VBS For Next循环的一些细节》中说到了 For Next 循环的控制变量仅仅在循环开始前求值一次,但是其中存在一处陷阱
收藏 0 赞 0 分享
查看更多