FAQs: 当在Outlook Explorer中右击邮件时,如何向上下文菜单添加按钮?(VSTO技术)

为了帮助大家更好地学习 VSTO 技术,微软论坛技术支持团队编辑了一些列的 "VSTO 常见问题及解答" 精华帖。

本帖的主题是:当在Outlook Explorer中右击邮件时,如何向上下文菜单添加按钮?

如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

如果您想阅读更多的 "VSTO 常见问题及解答",请打开索引页面:
http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba

 

这个问题的方法取决于我们正在工作的Outlook版本?

(1)     如果当前的版本是Outlook 2007,通过注册Application.ItemContextMenuDisplay事件,我们可以容易地实现这个目标。然后有一个带有两个参数的函数来处理该事件,一个是CommandBar对象,另一个是选中的邮件。为了向上下文菜单添加按钮,仅调用CommandBar.Controls.Add()

请参考这个链接:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/74e3fbaf-5806-4684-b410-65a0720386e8/

(2)     Outlook 2007对象模型, Application.ItemContextMenuDisplay事件是首次被引进。如果是Outlook 2003,为了这个目标,我们必须监听CommandBars.OnUpdate事件。但是在事件处理程序中,没有那种代表相应的命令栏的控件。我们需要通过下面的表达式来得到命令栏:Application.CommandBars[“Context Menu”]

我们可以从下面的链接中获得代码示例:http://www.outlookcode.com/codedetail.aspx?id=314

请注意:微软不支持在Office 2003中进行“上下文菜单”自定义项。使用这个代码会有一定的风险。由于Outlook 2003产品实现的改变,解决方案可能会在某处中断。官方上,自定义Outlook 2003的上下文菜单是不被支持的。

相关的论坛帖子:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/74e3fbaf-5806-4684-b410-65a0720386e8/

更多的有关VSTOFAQ,请看:

http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba

添加VB版本的代码,

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

        AddHandler Application.ItemContextMenuDisplay, AddressOf Application_ItemContextMenuDisplay

End Sub

 

Sub Application_ItemContextMenuDisplay(ByVal CommandBar As Microsoft.Office.Core.CommandBar, ByVal Selection As Microsoft.Office.Interop.Outlook.Selection)

        Dim cb As Office.CommandBarButton

        cb = CommandBar.Controls.Add(Office.MsoControlType.msoControlButton, , , , True)

        cb.Visible = True

        cb.Caption = "NewButton"

End Sub


源:

http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/98cbaaf4-3f88-49e5-88f3-4f9078977c07/


posted @ 2011-10-20 16:27  把爱延续  阅读(777)  评论(0编辑  收藏  举报