当前位置:首页 > 服务器类 > Windows服务器 > > 使用Word2003中的智能标记搜索收件箱数据

使用Word2003中的智能标记搜索收件箱数据

点击次数:27 次 发布日期:2008-11-29 22:58:47 作者:源代码网
源代码网推荐
源代码网推荐
源代码网推荐  简介
源代码网推荐  无论是撰写电子邮件、信函还是其他文档,都没有任何一种程序能够与 Microsoft Office Word 2003 的能力相比。您可以访问强大的模板、样式、搜索服务等许多功能。智能标记使您可以基于在 Word 文档中键入的文本来采取操作,从而提供了更好的体验。例如,当您键入某个人的姓名时,Word 可以将其识别为人员姓名,并且允许您在自己的 Outlook 联系人中快速搜索该姓名,并从那里采取操作。
源代码网推荐  
源代码网推荐  此功能非常适用于联系人。但是,如果是其他类型的内容,会怎样呢?使用 Outlook,您可以在 Exchange 邮件存储中存储任务、联系人、约会、便笺、电子邮件、公告等许多内容。能够标明文档中的字词并将它们连接到邮件存储中的上述其他内容类型的智能标记具有类似的价值,但不存在这样的内置智能标记。幸而,您可以十分轻松地开发此类智能标记。
源代码网推荐  
源代码网推荐  注 本文假设读者了解智能标记的用法、相应的智能标记 API 以及开发智能标记的基本过程。有关开发智能标记的详细信息,请参阅 MSDN Office 开发人员中心上智能标记门户的 Getting Started 部分。
源代码网推荐  
源代码网推荐  工作原理
源代码网推荐  该智能标记具有一个识别程序,该程序可以对 Word 中的文本输入进行计算,并确定键入的字词是否与预定义的搜索术语列表中的某个术语相匹配。您负责创建该术语列表,并将值存储在 XML 文件中。智能标记 DLL 在 Word 首次加载智能标记时读取此文件,并且将术语缓存在内存中。图 1 显示了包含术语列表的 XML 文件的内容。
源代码网推荐  
源代码网推荐  
 

源代码网推荐  
图 1. 用于识别的术语列表

源代码网推荐  
源代码网推荐  当 Word 发现键入的字词与列表中的某个术语相匹配时,就会为匹配的字词指定一个属性,从而将其标明为智能标记。图 2 显示了一个 Word 文档中的已识别术语。
源代码网推荐  
源代码网推荐  
 

源代码网推荐  
图 2. 用智能标记标明的已识别术语

源代码网推荐  
源代码网推荐  然后,您可以通过将光标悬停在所标明字词的上方来激活智能标记菜单。智能标记菜单显示了一个用于搜索邮箱的自定义项目(图 3)。
源代码网推荐  
 

源代码网推荐  
图 3. 已识别术语的智能标记操作菜单

源代码网推荐  
源代码网推荐  单击该项目会使智能标记执行相应的代码,以便在 Exchange 邮件存储中搜索收件箱中在主题行上包含该搜索术语的电子邮件。智能标记在一个 Windows 窗体中显示结果,该窗体带有一个 DataGrid,其中列出了主题中包含该搜索术语的邮件项目(图 4)。
源代码网推荐  
 

源代码网推荐  
图 4. Windows窗体中的搜索结果

源代码网推荐  
源代码网推荐  在此例中,DataGrid 仅显示电子邮件主题的字段以及发件人的信息。但是,它在幕后还检索其他电子邮件字段(如正文),尽管没有显示这些字段。通过简单地更改网格的属性,您可以显示这些隐藏字段。本文稍后将说明如何完成该操作。
源代码网推荐  
源代码网推荐  该示例的最后一项功能是使您可以将所选电子邮件的主要文本插入到 Word 文档中。您可以通过将光标悬停在 DataGrid 中某行的上方并右键单击该项目来完成此操作。代码将电子邮件的主题和正文插入 Word 文档中紧邻启用智能标记的文本的后面(图 5)。
源代码网推荐  
 

源代码网推荐  
图 5. 插入来自电子邮件的数据之后的文档内容

源代码网推荐  
源代码网推荐  当然,您还可以更改此功能,包括更改表格格式、代码将哪些字段内容插入文档以及代码将这些字段内容放到何处。
源代码网推荐  
源代码网推荐  注 如何以编程方式设置 Word 内容的格式超出了本文的范围,您可以通过参考本文结尾列出的资源来了解有关如何进行 Word 对象模型编程的更多信息。
源代码网推荐  
源代码网推荐  识别
源代码网推荐  智能标记代码中的主要识别功能是将文本输入与某个条件进行比较,并确定该文本是否重要。例如,您可以根据硬编码列表(最不灵活但速度最快的机制)、动态列表或正则表达式来进行比较。本文的示例使用了一个 XML 文件(图 1),该文件含有智能标记 DLL 在运行时加载的术语。该 DLL 将加载的术语列表存储在内存中,并使用它与文本输入进行比较。以下为加载该 XML 文件并在内存中存储术语列表的代码:
源代码网推荐  
源代码网推荐  Public Sub SmartTagInitialize( _
源代码网推荐  ByVal ApplicationName As String) _
源代码网推荐  Implements SmartTags.ISmartTagRecognizer2. _
源代码网推荐  SmartTagInitialize
源代码网推荐  Dim xmlDoc As New Xml.XmlTextReader("SearchTerms.xml")
源代码网推荐  While xmlDoc.Read
源代码网推荐  If xmlDoc.NodeType = Xml.XmlNodeType.Text Then
源代码网推荐  ReDim Preserve termList(termCount)
源代码网推荐  termList(termCount) = xmlDoc.Value()
源代码网推荐  termCount = termCount + 1
源代码网推荐  End If
源代码网推荐  End While
源代码网推荐  End Sub
源代码网推荐  
源代码网推荐  该代码在 SmartTagInitialize 事件激发时执行。您还可以将智能标记编写为在其他时间加载列表,或者定期检查是否有更新(这一切都需要不同但并不困难的代码)。
源代码网推荐  
源代码网推荐  该列表加载后,Recognize 或 Recognize2 方法中的代码可以使用它与用户在文档中键入的内容进行比较。
源代码网推荐  
源代码网推荐  注 当您实现上述接口以便在 Office 2003 的各个版本中创建附加的智能标记识别器或操作处理程序时,还可以实现旧式智能标记接口(版本 1.0 )或新式接口(版本 2.0 )。 Smart Tag Type Library 2.0 包含了这两个接口版本。 Recognize 方法属于版本 1.0,Recognize2 方法属于版本 2.0。同样,InvokeVerb 操作方法用于版本 1.0,而 InvokeVerb2 用于版本 2.0。本文中的代码使用的是版本 2.0 方法。
源代码网推荐  
源代码网推荐  识别器主要用于确定给定的文本字符串是否相关。您必须根据需要为此功能的逻辑编写代码。下面是 Recognize2 方法的逻辑:
源代码网推荐  
源代码网推荐  Dim i As Integer
源代码网推荐  Dim propbag As SmartTags.ISmartTagProperties
源代码网推荐  Dim token As SmartTags.ISmartTagToken
源代码网推荐  Try
源代码网推荐  Dim nToken As Integer
源代码网推荐  If Not TokenList Is Nothing Then
源代码网推荐  For nToken = 1 To TokenList.Count
源代码网推荐  = TokenList.Item(nToken)
源代码网推荐  If Not token Is Nothing Then
源代码网推荐  For i = 0 To termCount - 1
源代码网推荐  If token.Text.ToLower = termList(i).ToLower Then
源代码网推荐  propbag = RecognizerSite2.GetNewPropertyBag
源代码网推荐  RecognizerSite2.CommitSmartTag2( _
源代码网推荐  SEARCH_NAMESPACE, _
源代码网推荐  token.Start, token.Length, propbag)
源代码网推荐  End If
源代码网推荐  Next i
源代码网推荐  End If
源代码网推荐  Next
源代码网推荐  End If
源代码网推荐  Catch ex As Exception
源代码网推荐  " Add exception handling code
源代码网推荐  End Try
源代码网推荐  
源代码网推荐  该代码对作为 Recognize2 方法的参数传递的 TokenList 集合进行遍历。TokenList 集合包含有您希望代码对其进行计算的文本。当您遍历该集合时,会将它的项目与您在读取术语列表 XML 文件后存储在内存中的项目进行比较。
源代码网推荐  
源代码网推荐  当代码找到匹配项时,它将得到一个新的 PropertyBag 对象并提交一个智能标记,从而用一个命名空间属性有效地标明了识别的文本。当您在 Word 中将光标悬停于该文本之上时,应用程序将知道该文本以这种方式标明,并显示一个在处理智能标记操作的类中指定的菜单。
源代码网推荐  
源代码网推荐  编写操作处理程序
源代码网推荐  识别只是智能标记技术的一部分功能。您还需要为智能标记的操作编写代码。这是最有趣的部分,因为操作处理程序中的代码能够为您希望基于识别文本发生的操作提供功能。在该示例中,相应的操作是获得识别的术语,并且在用户的 Exchange 收件箱中搜索以查找主题中包含该术语的项目。代码会显示一个 Windows 窗体,该窗体带有一个DataGrid,其中包含搜索结果列表(图 4)。右键单击该网格中的搜索结果时,会将项目的正文插入 Word 文档中紧邻智能标记文本的后面(图 5)。
源代码网推荐  
源代码网推荐  下面是相应的代码
源代码网推荐  Try Select Case VerbID Case 1 If ApplicationName = "Word.Application.11" Then Dim rngWord As Word.Range = DirectCast(Target, Word.Range) Dim dv As DataView dv = UseWebDAV(rngWord.Text) If dv.Count > 0 Then " Create a new instance of the Windows form " with a DataGrid. Add columns to the grid. End If End If End Select Catch ex As Exception " Add exception handling code End Try
源代码网推荐  
源代码网推荐  该代码的大部分致力于设置 DataGrid 的格式(稍后将显示并解释相应的代码),该网格的数据源是从自定义函数 UseWebDAV 返回的 DataView。此过程包含用于查询 Exchange 的代码。
源代码网推荐  
源代码网推荐  注InvokeVerb2 方法具有一个参数,表示智能标记文本所在的 Word Range 对象:Target。您必须将该参数强制转换为声明为 Range 的变量。该代码使用 DirectCast(),因为 Target 不需要转换。
源代码网推荐  
源代码网推荐  查询 Exchange
源代码网推荐  您可以用多种方式访问 Exchange 邮件存储,包括 ADO、ADO.NET、WebDAV 或简单 HTTP。本文演示如何通过 WebDAV 检索项目。WebDAV 是一种扩展 HTTP 1.1(请参阅 RFC 2616)的协议,您可以将 Microsoft Exchange Server 2003 或 Microsoft Exchange Server 2000 配置为允许使用该协议来访问它的数据存储区。使用 WebDAV 时,您将使用 XML 格式通过 HTTP 来发送请求,而 Exchange 通过返回一个 XML 流来进行响应。
源代码网推荐  
源代码网推荐  注一种与使用 WebDAV 非常近似且需要类似查询语法的替代方法是使用 Outlook 对象模型中的 AdvancedSearch。有关详细信息,请参阅Microsoft Knowledge Base Article - 326244 How to use the AdvancedSearch method to search for an item in Out
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐
源代码网供稿.
网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华