阅读全文: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();            
        }

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

merlin.acs的使用方法 merlin.acs添加右键菜单相关推荐

  1. 在(CListView)列表视图中添加右键菜单的方法

    使用弹出式菜单(PopMenu) 弹 出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单.通常情况下,弹出式菜单在鼠标右键单击时弹出,当 然,也可以根据需要 ...

  2. openlayer右键菜单_OpenLayers添加右键菜单

    1.       首先修改 OpenLayers Events.js 定位到下面代码段,添加右键菜单事件: View Code OpenLayers.Events = OpenLayers.Class ...

  3. tkinter向文本框里加内容_给tkinter文本框添加右键菜单

    给tkinter文本框添加右键菜单 需求:直接右键点击使用tkinter创建的文本框是不会弹出菜单的.我们需要实现右键点击tkinter框架下的Entry对象.Text对象后弹出右键菜单可复制.粘贴和 ...

  4. 非管理员用户添加右键菜单(管理员也适用)

    目录 背景 解决办法 总结:把其他教程中的HKEY_CLASSES_ROOT替换为HKEY_CURRENT_USER\SOFTWARE\Classes即可 背景 网上大多数教程添加右键菜单的方法都需要 ...

  5. chrome添加右键菜单收藏CSDN文章到我的博客

    需求: 看到好的文章时,想收藏,但是chrome的收藏夹不支持搜索(虽然有其他插件可以用),收藏的多了以后不好找,而且万一某一天浏览器或系统重装,而没有登录同步数据或者没有导出由的话这些收藏就会丢失. ...

  6. win10计算机添加右键菜单,win10怎么添加右键菜单

    为了操作方便.快捷,又需要在桌面图标的右键菜单中添加菜单项目,那怎么添加呢?下面学习啦小编整理了解决win10右键菜单如何添加的方法,希望能帮到大家O(∩_∩)O哈哈~ win10右键菜单如何添加的方 ...

  7. Notepad++ 添加右键菜单

    Notepad++ 添加右键菜单 Notepad++ 绿色版 右键菜单没有它,每次都要查找 notepad++.exe 来打开没关联的文件. 根据网上的一些方法,准备一个notepad.reg,导入注 ...

  8. fineui grid ajax,基于FineUI Grid控件添加右键菜单

    FineUI官方Demo上一直没有Grid右键菜单的实现,其实从4.1.x的版本开始,允许添加自定义的事件监听(Listeners),所以要实现这个功能已经相当容易了. ExtJs右键菜单有很多种,对 ...

  9. java 右键菜单_界面操作--添加右键菜单

    [java]代码库package 添加右键菜单; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; impor ...

最新文章

  1. 【重置版】Android studio高效开发的秘密
  2. 剑指offer 算法 (代码的鲁棒性)
  3. 利用nginx搭建http和rtmp协议的流媒体服务器
  4. 在ASP.NET中UrlRewrite的实现(能隐藏扩展名)之一
  5. 代码之谜(二)- 语句与表达式
  6. SpringMVC基础配置及使用
  7. 数据产品必知的4层技术知识
  8. unity透明通道加颜色_Unity-雪地效果的实现
  9. python中括号的作用_Python3--中括号[]与冒号:在列表中的作用
  10. gradle构建java实例_Gradle构建Java应用程序
  11. Linux目录结构示意详解图
  12. OMP算法的物理意义表示
  13. r语言 python 股票_如何用R语言下载到国内股票数据?
  14. android苹果耳机音量调节,安卓线控耳机怎么调节音量大小?
  15. 聊聊关于软件质量的思考
  16. p3c插件 离线安装_阿里开发规范及P3C插件
  17. 被高企的社会化网络精准营销
  18. 操作系统镜像资源(迅雷、天翼云、百度云)
  19. Oracle分析函数PERCENTILE_CONT
  20. [总结]蓝牙各个版本的关系和区别

热门文章

  1. Qt文档阅读笔记-Q_GADGET官方解析及实例
  2. Spring Boot三合一实验(添加人员,修改人员,删除人员)
  3. Qt官方文档阅读笔记-对官方Star Delegate Example实例的解析
  4. Qt工作笔记-QFileSystemModel创建文件系统信息模型
  5. 用友php漏洞,用友CRM注入漏洞(无需登录通杀所有版本)
  6. 华为手机8.0.0怎么找到云相册_华为G9怎么找到云相册_失而复得 华为“查找手机”功能有多强大?快来了解一下......
  7. 同省异地社保卡要换吗_攀枝花社保卡在成都住院可直接结算吗,要办理异地就医备案才行...
  8. 便携式计算机推销洽谈方案,推销洽谈的方法
  9. php增加mysql索引_mysql怎么添加索引
  10. linux2.6 gcc,在Linux内核 2.6.38.7 上,gcc堆栈粉碎代码不工作 请帮助_gcc_开发99编程知识库...