关闭

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

标签: c++buildermicrosoftstringwindowsrazorsearch
912人阅读 评论(1) 收藏 举报
  选择自 sas_razor 的 Blog

弄了整整一个晚上,看了无数大师们的资料,终于把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()等函数。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:781852次
    • 积分:8982
    • 等级:
    • 排名:第2229名
    • 原创:135篇
    • 转载:160篇
    • 译文:1篇
    • 评论:308条
    最新评论