merlin.acs的使用方法 merlin.acs添加右键菜单

阅读全文: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""弹出消息框"""truetrue);
            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();            
        }


 

 

转载于:https://www.cnblogs.com/sufei/archive/2009/03/14/1485988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值