📄 让你的汇编程序有声有色 .txt
字号:
让你的汇编程序有声有色
相关的例子:下载>>> 作者:谢平 于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 提供了很多角色下载
最终的运行结果:
--------------------------------------------------------------------------------
欢迎访问AoGo汇编小站:http://www.aogosoft.com 下一篇>>>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -