首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> Authorware教程
use MSAgent in C#-.NET教程,C#语言
作者:网友供稿 点击:295
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
查资料的时候突然看到msagent编程,找了些资料动手写了几行代码。

如果没有msagent runtime或者sdk的话,可以去www.microsoft.com下载,如果用vc++,则需要下载两个头文件。

创建.net项目以后,添加一个引用,选择com页,然后选择microsoft agent server 2.0。并在需要使用agent的地方引用agentserverobject的名字空间。

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

using agentserverobjects;

using system.threading;

namespace helloagent

{

/// <summary>

/// form1 的摘要说明。

/// </summary>

public class form1 : system.windows.forms.form

{

private system.windows.forms.button btndelegate;



private agentserver agentserver = null;

private iagentex agentex = null;

private iagentcharacterex characterex = null;

private iagentnotifysink sink = null;



private int dwcharid = 0;

private int dwreqid = 0;

private int dwsinkid = 0;

private string strcharname = "c:\\windows\\msagent\\chars\\merlin.acs";

/// <summary>

/// 必需的设计器变量。

/// </summary>

private system.componentmodel.container components = null;



public form1()

{

//

// windows 窗体设计器支持所必需的

//

initializecomponent();



//

// todo: 在 initializecomponent 调用后添加任何构造函数代码

//

}



/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

protected override void dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}



#region windows 窗体设计器生成的代码

/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void initializecomponent()

{

this.btndelegate = new system.windows.forms.button();

this.suspendlayout();

//

// btndelegate

//

this.btndelegate.location = new system.drawing.point(96, 32);

this.btndelegate.name = "btndelegate";

this.btndelegate.tabindex = 0;

this.btndelegate.text = "delegate";

this.btndelegate.click += new system.eventhandler(this.btndelegate_click);

//

// form1

//

this.autoscalebasesize = new system.drawing.size(6, 14);

this.clientsize = new system.drawing.size(292, 273);

this.controls.add(this.btndelegate);

this.name = "form1";

this.text = "form1";

this.load += new system.eventhandler(this.form1_load);

this.resumelayout(false);



}

#endregion



/// <summary>

/// 应用程序的主入口点。

/// </summary>

[stathread]

static void main()

{

application.run(new form1());

}



private void initagent()

{

agentserver = new agentserverobjects.agentserverclass();

if( agentserver == null )

{

messagebox.show( "agent初始化失败" );

}



agentex = (iagentex)agentserver;

agentex.load(strcharname, out dwcharid, out dwreqid);

agentex.getcharacterex(dwcharid, out characterex);



characterex.show(100, out dwreqid);

characterex.speak("hello", null, out dwreqid);



string strname = "";

characterex.getname(out strname);

characterex.speak("my name is " + strname, null, out dwreqid);



sink = new agentevent( new speakdelegate(speaksomething) );

agentex.register(sink, out dwsinkid);

}



private void form1_load(object sender, system.eventargs e)

{

initagent();

}



public delegate void speakdelegate(string str);

public void speaksomething(string str)

{

if(invokerequired)

{

begininvoke( new speakdelegate( speaksomething ), new object[]{str});

return;

}



characterex.wait(1000, out dwreqid);

thread.sleep(1000);

characterex.speak(str, null, out dwreqid);

}



private void threadproc()

{

speaksomething("hello,this is use delegate.");

}



private void btndelegate_click(object sender, system.eventargs e)

{

thread thread = new thread( new threadstart(threadproc) );

thread.isbackground = true;

thread.start();

}

}

}

代码没有加注释,因为我找不到需要注释的地方,请多多包涵。

agent的事件需要继承agengserverobject名字空间下的一些接口。

using system;

using agentserverobjects;

namespace helloagent

{

/// <summary>

///

/// </summary>

public class agentevent :iagentnotifysink

{

private form1.speakdelegate delg = null;



public agentevent(form1.speakdelegate delg)

{

//

// todo: 在此处添加构造函数逻辑

//

this.delg = delg;

}

#region iagentnotifysink 成员



public void command(int dwcommandid, object punkuserinput)

{

// todo: 添加 agentevent.command 实现

delg("command");

}



public void dragstart(int dwcharid, short fwkeys, int x, int y)

{

// todo: 添加 agentevent.dragstart 实现

delg("dragstart");

}



public void requeststart(int dwrequestid)

{

// todo: 添加 agentevent.requeststart 实现

//delg("requeststart");

}



public void visiblestate(int dwcharid, int bvisible, int dwcause)

{

// todo: 添加 agentevent.visiblestate 实现

delg("visiblestate");

}



public void balloonvisiblestate(int dwcharid, int bvisible)

{

// todo: 添加 agentevent.balloonvisiblestate 实现

//delg("balloonvisiblestate");

}



public void dragcomplete(int dwcharid, short fwkeys, int x, int y)

{

// todo: 添加 agentevent.dragcomplete 实现

delg("dragcomplete");

}



public void click(int dwcharid, short fwkeys, int x, int y)

{

// todo: 添加 agentevent.click 实现

delg("click");

}



public void dblclick(int dwcharid, short fwkeys, int x, int y)

{

// todo: 添加 agentevent.dblclick 实现

delg("dblclick");

}



public void shutdown()

{

// todo: 添加 agentevent.shutdown 实现

delg("shutdown");

}



public void size(int dwcharid, int lwidth, int lheight)

{

// todo: 添加 agentevent.size 实现

delg("size");

}



public void restart()

{

// todo: 添加 agentevent.restart 实现

delg("restart");

}



public void bookmark(int dwbookmarkid)

{

// todo: 添加 agentevent.bookmark 实现

delg("bookmark");

}



public void requestcomplete(int dwrequestid, int hrstatus)

{

// todo: 添加 agentevent.requestcomplete 实现

//delg("requestcomplete");

}



public void move(int dwcharid, int x, int y, int dwcause)

{

// todo: 添加 agentevent.move 实现

delg("move");

}



public void idle(int dwcharid, int bstart)

{

// todo: 添加 agentevent.idle 实现

//delg("idle");

}



public void activateinputstate(int dwcharid, int bactivated)

{

// todo: 添加 agentevent.activateinputstate 实现

delg("activateinputstate");

}



#endregion



}

}

在触发事件的时候调用了一个form1里面的一个delegate,该delegate在事件类构造的时候初始化。详细请参考:…



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Java面试中的陷阱-JSP教程,Java技巧及代码
·通过JavaMail访问Hotmail邮箱-JSP教程,Java技巧及代码
·ASP.NET中使用自定义验证控件-.NET教程,Asp.Net开发
·燃气轮机发电机组的开发与应用——张树治
·有数据绑定、排序、查找功能的ListView(二):-.NET教程,数据库应用
·显示日期格式的几个函数-ASP教程,ASP应用
·在.NET下获取硬盘序列号的问题-.NET教程,.NET Framework
·use MSAgent in C#-.NET教程,C#语言
·利用光缆传输有线电视信号
·电信级宽带应用网站并发性承载均衡研究
最新文章
·photoshop照片处理:色彩的强化及优化_photoshop教程
·献给想我一样初基础网站优化的朋友们_seo网站优化
·百度联盟认证计划 与合作伙伴互惠共赢_网赚技巧
·如何去选择广告联盟和联盟广告_网赚技巧
·专业的网站流量快速提升的方法_站长心得
·改进网络营销的10种方法_站长心得
·教你最大限度地提高 google adsense 收入的技巧_google推广
·如何建立网站地图(site map)_站长心得
·seo偏门绝技之关键词隐身大法_seo网站优化
·265步hao123后尘被清空数据,谁来代替alexa排名?_alexa排名
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭