如何在C++builder中调用Microsoft agent

王朝c/c++·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

弄了整整一个晚上,看了无数大师们的资料,终于把merlin显示在我的桌面上。网上关于这方面的资料有不少,但是照搬这些程序的时候总是有很多错误,下面是CSDN里的一个贴子: CSDN - 专家门诊 - C++ Builder VCL组件使用和开发问题

http://community.csdn.net/Expert/TopicView3.asp?id=4074506

有不少朋友提供的非常有价值的信息,如constantine(飘遥的安吉儿)和F117p((兰色狐狸),但是照搬这些程序仍有很多错误,不能正确调用MS agent.

那么,下面我想和大家分享一下在C++builder中调用Microsoft agent的一些技巧。

step 1: 调用MS agent 首先要安装 microsoft agent 2.0, windows2000 及XP均已安装了该程序,一般情况下不必安装,当然除非是你曾经卸载了它。

step 2:打开C++builder,菜单component ->import activeX control..., 选择 microsoft agent control 2.0,然后install,之后系统会提示你编译,确认。成功后,ms agent 已经安装到了 ActiveX 控件栏上了,名字是TAgent. (这里想谈一下如何卸掉TAgent的方法,可能有人会用到,因为一次安装不成功的话,必须要卸掉重新安装。在BCB里打开dclusr.bpk,在package-dclusr.bpk窗口里把和agentobjects_OCX有关的两个文件remove掉,然后重新compile,再重复step 2)

step 3: 新建一个项目,在Form1里添加如下代码,这些代码可放在form_create里,也可以放在你需要的地方:

char tmp[100]; //用来暂存windows安装目录

GetWindowsDirectory(tmp,100); //取得windows安装目录

String tmppath=String(tmp)+"\msagent\chars\Merlin.acs";

//String(tmp)是把char类型转变为String,然后将文件的完整路径存入tmppath

BSTR Agentname = BSTR("merlin"); //将String 类型转变为 wchar_t*

Variant Agentpath = Variant(tmppath); //将tmppath 类型转变为tagVARIANT

Agent1->Characters->Load(Agentname,Agentpath);

//载入ms agent 人物,Load的格式为Load(wchar_t*,tagVARIANT)

IAgentCtlCharacterEx* Merlin = (IAgentCtlCharacterEx*)Agent1->Characters->Character(Agentname);

把人物指定给一个变量Merlin,当然你可以自己命名

//下面是一些基本的测试,有关ms agent操纵的更详细内容请参阅有关文档

Merlin->Show(Variant(0));

Merlin->MoveTo(100,100,Variant(2));

Merlin->Play(WideString("Search"));

//以上程序在C++Builder 6.0 上编译通过。

总结:BCB中操纵MS agent最多的错误就是数据类型的不匹配,BSTR() 及Variant()则很好地解决了这个问题。大家学习BCB的时候不要着急,这两个函数都是我慢慢试出来的,同时也感谢各网友提供的WideString,c_bstr(),Tvariant()等函数。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航