让你的汇编程序有声有色
相关的例子:下载>>> 作者:谢平 于2008-9-19上传 

    今天我们一起学习一下怎样使用汇编语操作Windows内置的MsAgent。相信你一定在网络上见过很多关于MsAgent的文章和代码,

大都使用的是VB,VC,C#,Delphi以及一些脚本,而使用汇编语言的,真的是寥寥无几.

     怎么,那位同学不知道什么是MsAgent?哦,有用过瑞星没有,瑞星的那个狮子就是瑞星定制的一个MsAgent卡通人物,此外常见的

是莫林,还有一个孙悟空倒是挺有趣的,不过我没有用过。

     嗯,要不我们先通过一个网页来看看吧,是附件中的TestMsAgent.html.你可以用IE浏览器打开,由于内含java脚本,所以操作系统

默认会阻止并弹出提示的对话框(FireFox默认是禁止java脚本的,所以你如果FireFox的话,它会看起来一点反应都没有),当你在弹出的

信息栏中选择“允许阻止的内容”后,你就可以看到一个大胡子的卡通人物,这个就是传说中的莫林了.如你所见它可以表演一系列的动作,

也可以和你说话,当然这个需要你安装一点多余的东西——语音引擎Lernout & Hauspie(c)TTS3000 TTS engine - British

English(http://activex.microsoft.com/activex/controls/agent2/tv_enua.exe即附件中的tv_enua.exe)以及语音识别引擎Speech

recognition engines(http://activex.microsoft.com/activex/controls/sapi/spchapi.exe即附件中的spchapi.exe)。

     现在我们开始今天的主题,以下代码都是基于NaN的代码改造的,感谢NaN。不过很抱歉我记不起他的主页了。

其实这里的大部分内容都属于面向对象的部分,也就是Com接口.其实这其中的很多基础的代码我也没有看的很懂,不过我对其中某些

内容进行了补充和修改,算是能实现MsAgent的最基础的应用了吧.所以我们今天只讲应用不讲原理.

附件一共包含:
源文件:agent.asm(主源文件),msagent.asm
资源文件:agent.rc
可执行文件:agent.exe
Inc文件:agtsvr.inc,object.inc
安装文件:spchapi.exe(语音识别引擎),tv_enua.exe(语音引擎)
Html网页:Msagent.html(msagent.asm的说明文件),TestMsAgent.html(测试MsAgent的java脚本网页)
在开始写代码之前,你需要:
安装语音识别引擎和语音引擎,如果你想听到Msagent人物声音的话;
用object.inc覆盖masm中include目录下的object.inc;
将agtsvr.inc Copy到masm的include目录下.

程序依然使用对话框作为主界面,关键代码都位于对话框过程_ProcDlgMain中.
在WM_INITDIALOG消息响应中,先实例化一个MSAgent对象:
mov hAgent, $NEW( MSAgent )
如果成功:
.if hAgent
METHOD hAgent, MSAgent, Show ;显示MsAgent人物
METHOD hAgent, MSAgent, Gesture, POS_PROCESS ;演示动作"搅拌大锅"
METHOD hAgent, MSAgent, Gesture, POS_SUGGEST ;演示动作“显示电灯”
METHOD hAgent, MSAgent, Speak, addr szWelcome ;“致欢迎词”
METHOD hAgent, MSAgent, ReadClipboard, hWin ;朗读剪贴板中的内容
METHOD hAgent, MSAgent, Hide ;隐藏人物
.endif
在WM_CLOSE消息代码中,
.if hAgent
METHOD hAgent, MSAgent, Show ;显示人物
METHOD hAgent, MSAgent, Speak, addr szExitApp ;朗读提示程序将退出
.endif
invoke PostQuitMessage,NULL
在WM_DESTROY代码中:
.if hAgent
invoke Sleep,2000 ;主线程睡眠两秒,等待“朗读提示程序将退出"结束
DESTROY hAgent ;销毁MSAgent对象
invoke Sleep,2000 ;主线程睡眠两秒,等待MSAgent退出
.endif
invoke ExitProcess,NULL

其中METHOD是一个宏.在MsAgent.html中有关于各种方法的的调用方式和参数,返回值,描述等。目前可以演示的动作有74种,

在MsAgent.html中也有详细的描述,请查阅.

值得一提的是,包含inc和lib文件的部分:
include windows.inc
include Objects.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include ole32.inc ; Interfacing COM
includelib ole32.lib ; Interfacing COM
include oleaut32.inc ; Used for SysAllocString and Varient
includelib oleaut32.lib ; COM tools lib
以上属于masm根目录下的include和lib文件夹;
include oaidl.inc ; Used for Coinvoke and others
include bstrlib.inc ; BSTR functions
include L.inc ; BSTR functions
includelib bstrlib.lib ; The BSTR lib
以上属于masm根目录下com目录下的include和lib文件夹;
include MSAgent.asm ; Will include COM itself.
msagent应在当前目录.你应当根据自己的目录层次包含它们.

也欢迎大家光临我的主页:http://hi.baidu.com/xiep_

另外,http://www.msagentring.org/chars.aspx?page=1 提供了很多角色下载

最终的运行结果:

wpe1.jpg (72366 字节)



欢迎访问AoGo汇编小站:http://www.aogosoft.com
下一篇>>>