阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=39
看看这个怎么样吧
直接看代码吧我就不多说了
1.先下载一下这个控件 吧
网上多的是Google一下就可以下载的到了,文件名子是merlin.acs可能有2MB多点,下载完成以后放在bin\Debug里就可以了
下面我们添加一个引有控件的名称是Microsoft Agent Control 2.0
现在把我下面的程序就可以直接 用了
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace Yanshi
{
public class FairyServers
{
private AgentObjects.Agent MyController;
private AgentObjects.IAgentCtlCharacter MyCharacter;
private Point Location;
/**//// <summary>
/// 加载时应用
/// </summary>
public void load(int X,int Y)
{
//初始化精灵对象
string strpath = Application.StartupPath;
MyController = new AgentObjects.AgentClass();
MyController.Connected = true;
MyController.Characters.Load("merlin", strpath + "\\merlin.acs");
MyCharacter = MyController.Characters.Character("merlin");
MyCharacter.MoveTo(System.Convert.ToInt16(Location.X + X), System.Convert.ToInt16(Location.Y + Y), null);
MyCharacter.Show(null);
//this.Speak("欢迎大家来到伙伴宿舍管理系统!!!");//开始说话
//this.Congratulate_2();//拍手称赞
//this.Announce(); //吹广播号
//this.stop(); //停止
}
/**//// <summary>
/// 清楚
/// </summary>
public void Clear()
{
this.MyCharacter.StopAll(null);
}
/**//// <summary>
/// 向右看
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void GestureLeft(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("GestureLeft");
}
/**//// <summary>
/// 祝贺
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Congratulate(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Congratulate");
}
/**//// <summary>
/// 惊讶
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Surprised(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Surprised");
}
/**//// <summary>
/// 解释
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Explain(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Explain");
}
/**//// <summary>
/// 称赞
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Congratulate_2(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Congratulate_2");
}
/**//// <summary>
/// 注意
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void GetAttentionReturn(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("GetAttentionReturn");
}
/**//// <summary>
/// 挥手
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Wave(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Wave");
}
/**//// <summary>
/// 广播
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Announce(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Announce");
}
/**//// <summary>
/// 建议
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Suggest(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Suggest");
}
/**//// <summary>
/// 反对
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void DontRecognize(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("DontRecognize");
}
/**//// <summary>
/// 隐藏默林精灵
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void stop(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Hide(null);
}
/**//// <summary>
/// 演示说话效果
/// </summary>
/// <param name="strWrite">说话的内容</param>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Speak(string strWrite, Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
MyCharacter.Speak(strWrite, null);
}
/**//// <summary>
/// 写字
/// </summary>
/// <param name="isTrue">是否停止上一个动作True为是False为不是</param>
public void Write(Boolean isTrue)
{
if (isTrue)
{
this.MyCharacter.StopAll(null);
}
this.MyCharacter.Play("Write");
}
}
}
在这里是我能想到的动作
action[0]=" Acknowledge "; //承认
action[1]=" LookDown "; //向下看
action[2]=" Sad "; //悲伤
action[3]=" Alert "; //警告
action[4]=" LookDownBlink "; //向下看眨眼
action[5]=" Search "; //寻找
action[6]=" Announce "; //声明
action[7]=" LookUp "; //向上看
action[8]=" StartListening "; //开始聆听
action[9]=" Blink "; //眨眼
action[10]=" LookUpBlink "; //向下看眨眼
action[11]=" StopListening "; //停止聆听
action[12]=" Confused "; //迷惑
action[13]=" LookLeft "; //向左看
action[14]=" Suggest "; //建议
action[15]=" Congratulate "; //祝贺
action[16]=" LookLeftBlink "; //向左看眨眼
action[17]=" Surprised "; //吃惊
action[18]=" Declines "; //拒绝
action[19]=" LookRight "; //向右看
action[20]=" Think "; //思考
action[21]=" DontRecognize "; //不承认
action[22]=" LookRightBlink "; //向右看眨眼
action[23]=" Wave "; //挥动
action[24]=" Explain "; //解释
action[25]=" MoveDown "; //向下移动
action[26]=" Write "; //书写
action[27]=" GestureDown "; //向下姿势
action[28]=" MoveUp "; //向上移动
action[29]=" Processing "; //计算
action[30]=" GestureUp "; //向上姿势
action[31]=" MoveRight "; //向右移动
action[32]=" Reading "; //阅读
action[33]=" GestureLeft "; //向左姿势
action[34]=" MoveLeft "; //向左移动
action[35]=" Searching "; //寻找
action[36]=" GestureRight "; //向右姿势
action[37]=" Pleased "; //高兴
action[38]=" Writing "; //书写
action[39]=" GetAttention "; //获得注意
action[40]=" Read "; //阅读
action[41]=" Greet "; //问候
这里是怎么样添加右键菜单 的
Code
写在前面:AgentObject是很好玩的东西,像office2007之前的版本都有这个小精灵,用来show的话,是不错的。但是它是com的组件,要使用这个组件就必须要了解一定的接口知识。这就是问题所在,因为调试又不方法,实在是好烦的。下面介绍一个简单的方法使用AgentObject,并可以增加小精灵右键的菜单。
初始化控件
.net对之前的技术是有打包的,也就是说com组件的使用一点问题也没有。那我们就使用最简单的方法来设置com组件,也就是拖控件的办法。这也是最好使的,如果不使用拖控件的办法,如果你在设置的过程中发现了不可解决的问题,你会很头大的。
也就是很建一个UserControl,然后调出工具箱,添加项,选中Com组件,然后是Microsoft Agent Control。这样,工具箱就多出了这个控件,你可以把它拖出来。
这样,new的动作就完成了,你会发现你的项目引入了新的dll两个。一个是源com组件,一个是经过.net打包的控件。这个经过.net打包的控件,如果不是拖放控件,你怎么也找不到的。Dll的名称是AxInterop.AgentObjects。
效果图
下面的方法,可以为Agentobject增加右键菜单。
使用AgentObject
使用时,可以参考下面的代码
public partial class AgentControl : UserControl
{
private AgentObjects.IAgentCtlCharacter axAgent1Character = null;
public AgentControl()
{
InitializeComponent();
}
private void AgentControl_Load(object sender, EventArgs e)
{
axAgent1.Connected = true;
axAgent1.Characters.Load("merlin", "merlin.ACS");
axAgent1Character = (AgentObjects.IAgentCtlCharacter)axAgent1.Characters["merlin"];
axAgent1Character.Commands.Add("MessageBox", "弹出消息框", "", true, true);
axAgent1.Show();
axAgent1.Command += new AxAgentObjects._AgentEvents_CommandEventHandler(axAgent1_Command);
}
void axAgent1_Command(object sender, AxAgentObjects._AgentEvents_CommandEvent e)
{
AgentObjects.IAgentCtlUserInput _userInput = ((AgentObjects.IAgentCtlUserInput)e.userInput);
if (_userInput.Name == "MessageBox")
{
MessageBox.Show("弹出消息框", "axAgent1提示");
}
}
}
这里就是使用的方法,而调用时就直接new这个控件就可以了。这个AgentObject自然就会被加载了。
呵呵,真是好简单的。
private void Form1_Load(object sender, EventArgs e)
{
AgentObjectsTest.AgentControl _control = new AgentControl();
}
本人的博客不再维护从2013年就不再维护了
需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!