使用NameCtrl为网页集成Office Communicator状态信息
2014-06-12 22:28
246 查看
NameCtrl是Office自带的一个ActiveX控件,它存在于C:\Program Files\Microsoft Office\Office12\NAME.DLL中。利用它可以显示Office Communicator的状态图标,并且图标包含了菜单,通过菜单可以进行聊天,发送邮件等操作。
关于NameCtrl的细节请访问http://msdn.microsoft.com/en-us/library/bb862236.aspx
Spirit在《Web系统集成OCS在线状态功能》一文中向大家介绍了如何使用这个控件,而我这篇文章将从NameCtrl的一个方法和一个事件入手,来更完美的在网页中集成Office
Communicator状态信息。
先来谈谈直接使用NameCtrl来显示状态的好处吧:
NameCtrl是Office提供的ActiveX控件,我们只需要直接在HTML中编写非常简单的JavaScript代码来和它交互,而不必编写Server端代码,轻而易举的实现Ajax效果。
但是它也有一些缺憾:
首先,NameCtrl是不可以永久显示的,它需要你调用它的ShowOOUI来显示状态图标,当你点击此状态图标打开菜单,然后关闭菜单后,这个图标也就不见了;
其次,NameCtrl的菜单是不可以自定义的,有时候我们并不想显示这个菜单。
如果你想要像Office Communicator内置的联系人状态显示效果,方法不止一种,本文还是使用NameCtrl控件,利用它的一个方法(GetStatus)和一个事件(OnStatusChange)来完成这样的效果。下面来介绍一下GetStatus方法和OnStatusChange事件:
GetStatus(bstrName, bstrID)
此方法用来订阅联系人的状态信息。它的参数bstrName表示联系人的账号;而参数bstrID则是一个HTML元素的ID,这个ID有什么用呢?请往下看。
MyOnStatusChange(name, status, id)
当通过GetStatus订阅的联系人状态发生了改变,就会触发此事件。它的参数name表示联系人的账号;参数status表示联系人的当前状态,是一个int值,下面我会列出可能的值和其含义;参数id就是我们调用GetStatus是传入的参数bstrID了。
在我的测试中发现,status的值和Office Communicator的默认状态有如下对应关系:
0:空闲
1:显示为脱机;脱机
2:离开
3:忙碌
4:马上回来
9:请勿打扰
中间空了几个是什么我也不知道。
那么在我们的网页中如何使用这两个方法呢?
首先,我们在初始化联系人列表时,在所有联系人前面默认添加一个状态图标(这个图标可以显示为脱机状态),然后,调用GetStatus方法来订阅所有联系人的状态信息。
NameObj.GetStatus(childNode.Attributes["Email"], childNode.ImageElement().id);
然后,处理OnStatusChange事件,根据传入参数来改变UI的中相应的状态图标。
function MyOnStatusChange(name, status, id)
{
var img = document.getElementById(id);
img.src = "images/" + status + ".png";
}
最后,别忘了初始化NameCtrl控件并为其绑定OnStatusChange事件。
function InitializeObject()
{
try
{
NameObj = new ActiveXObject("Name.NameCtrl");
NameObj.OnStatusChange = MyOnStatusChange;
}
catch(e){}
}
InitializeObject();
OK,看一下最终的效果吧:
不过NameCtrl有个缺陷,如果你为Office Communicator定制了自定义状态,那么这些自定义状态被NameCtrl捕获后,永远是空闲(0)状态。
转自:http://www.cnblogs.com/xiaoshatian/archive/2008/08/04/1258399.html
相关文章推荐
- 使用NameCtrl为网页集成Office Communicator状态信息
- 在sharepoint中使用NameCtrl显示人员状态
- asp.net 初步入门使用正则抓取网页信息
- 在MFC GridCtrl中使用CGridCellCheck类根据GetCheck()状态做不同处理的实现
- 使用Python抓取网页信息
- accept和recvfrom和gerpeername中__保存远程主机的地址信息,所以必须在使用前,必须初始化地址长度len
- 使用网页抓取技术获取自己World Community Grid任务信息的经历
- BCG中使用状态栏显示状态信息
- 总结!使用virConnectGetHostname()获取相关信息!RO~ 3ff8
- delphi 使用API返回网页信息
- 使用ASP.NET状态服务维护会话信息
- C++编程中,利用WINDOWS API获得系统状态信息[CPU占用率,硬盘使用情况,内存使用情况]
- 使用Jquery.load()方法,出现-此页的状态信息无效,可能已损坏。
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- 使用ASP.NET状态服务维护会话信息
- C++编程中,利用WINDOWS API获得系统状态信息[CPU占用率,硬盘使用情况,内存使用情况]
- 使用Response.Flush方法实时显示处理过程的状态信息
- 使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态