Archive for February, 2006

梅林会说话了

  要让梅林说话很简单,只需要安装上合适的TTS引擎就可以了,比如微软AGENT主页上面提供的一个叫做L&H引擎,并且在代码中设置一下语种ID就好了。可惜的是这个引擎尚不支持中文(同样是东亚语言,日文和韩文倒是支持,郁闷),要让这个控件能够说中文,还是需要安装完整的SAPI和相关的资源,这就过分了。

  还有一个小进步就是支持脚本,要让梅林说更多的话做更多的动作不需要重新修改编译程序了,只需要编辑一个XML文档。而且如果想换一个角色,比如机器人、阿拉丁灯神、鹦鹉等也变得很方便了。

5 Comments

燕子生日

  刚好是周末,可以陪伴燕子在家里度过一个特别的周末。送给宝贝一对带自己头像的水杯,一起分享蛋糕。丫头,祝你生日快乐,日日快乐。

5 Comments

魔法师梅林

  前些年浙大校网曾经有个黑客事件,某同学因为不能忍受校网中心的管理水平和办事效率,一怒之下攻入校网中心的Web服务器,修改了首页。不过此君大概也是个生性幽默之人,没有像时下动辄号称自己是黑客红客绿客的“高手”们一样在网页上破口大骂胡乱涂鸦,而是用一种让人意外的方式给所有人开了一个玩笑。

  一登录该网站,屏幕上就跳出魔法师梅林,就是在常常搜索文件和Office助手里面出现的蓝袍白胡子老头。看着小老头摇头晃脑地抱怨使用校网过程中的种种不便,据说连“受害者”校网中心的负责老师们也忍俊不止。一看网页源代码,原来是用JavaScript插入了一个MS Agent控件,然后用脚本控制这个角色动作和说话。实现并不复杂,但是不得不佩服这个校友的创意,这位仁兄,现在早已毕业了吧,在何方高就呢?

  后来我就一直记着这件事情,也曾经好好研究过MS Agent这个控件的用法,还在自己的一个程序里面聘请这个有趣的魔法师作为助手。只是有几个小小的问题,有些角色,比如Merlin,会在系统托盘栏中生成一个小图标。而我当时的那个邮件收发程序也是驻留在托盘栏中的,这下一个程序两个图标放在那里总觉得很别扭,得想个办法把这个图标给隐藏掉。

  首先确认这个控件的C++包装类中没有提供关于托盘栏图标的方法,网上搜索也没有答案(Google也不是万能的),看来得自己动手强行干掉它了。方法很直接,就是调用Shell_NotifyIcon,问题就在于知道添加这个图标时候使用的窗口句柄和ID。请出Spy++查看桌面上与“Agent”相关的所有进程和窗口,呵呵,还真不少。联想到只有部分角色会生成这个图标,那么这里有一个注册名叫AgentCharacter的无标题窗口就很可疑。那么ID怎么办呢?呵呵,这里我用了一个很无赖的招数,那就是……一个个试,直到Shell_NotifyIcon函数返回TRUE,记录这个ID就是了。嘿,还真的成功了,重复几次确认每次都是用1025这个ID,看来这个方法是没错的了。

  另外还有一个问题就是角色的有些动作是不会自动结束的,这样造成的结果就是如果长时间不去动这个角色,它可能会打瞌睡,到时候任凭你怎么点击拖动它都不会理你了。这个问题比较好解决,内置一个定时器,让角色无聊的时候随机做几个类似东张西望的动作即可。如果发现角色长时间处在睡眠、阅读的时候,点击或者拖动它的时候让它用不满的语气说上一句“找我有什么事?”,一个有趣的小老头,哈哈。

  VB和JavaScript里面使用该控件都是比较简单的事情,如果使用VC可能要面对十几个名叫CAgentCtlXXX的类,未免繁琐了一些。所以我把这个控件重新封装成一个类以DLL的方式发布,只提供几个基本的方法:Create/Destroy、Show/Hide、Speak/Think/Play……这下使用起来方便多了。未来希望能够搞清楚TTS,使用语音进行交互,让这位老头为我们的程序做更多的事情。

10 Comments

熊的一家

  其实没有刻意去挑选,结果发现三年来每个二月份都会送给燕子一只小熊。有的是生日礼物,有的是新年礼物,还有情人节礼物,结果刚好凑成一家人,呵呵。

2 Comments

Google黑板报

  Google真是个神奇的团体,经常能够在它简洁到极致的页面中发现一些新玩意,比如今天上午开通的黑板报。另外,GMail也可以在手机上使用了,WAP地址是m.gmail.com。

  顺便说一句,这黑板报的第二篇文章看上去就像招聘软广告,嘿嘿。

1 Comment

狗年看狗

  今年是狗年,小区里面养宠物狗的也特别多。下午天气好,就在小区边拍了几张狗PP。

5 Comments

定情纪念日

  三周年了,几个月前曾经在日志里面大致提到过2.11这个纪念日的典故。今年更加夸张,我的生日、纪念日、元宵、情人节……几天连在一起,都有点应接不暇。

  前几天燕子写过一篇日志《幸福是什么?》,对我进行了委婉的批评。看得我乐坏了,很喜欢这种感觉。

3 Comments