如何开发外接程序应用程序 OneNote 2010 功能区


简介


本文介绍了多功能一体代码框架示例,它可供下载。 该代码示例演示如何开发 Microsoft OneNote 2010 COM 外接程序的应用程序实现IRibbonExtensibility接口。 外接程序的应用程序支持实现IRibbonExtensibility接口的自定义功能区。 此代码示例还介绍了如何使用 OneNote 2010 对象模型。

难度级别

下载信息

若要下载此代码示例,请单击以下链接之一:

技术概述

创建 OneNote 2010 的共享外接程序中应用

因为共享外接程序向导不包含 Microsoft OneNote 选项,以创建一个共享外接程序应用程序 OneNote 2010,请按照下列步骤:
  1. 为您的应用程序主机共享外接程序向导中选择 Microsoft Access。
  2. 修改安装项目注册表HKCU到下面的注册表子项:
    [HKEY_CURRENT_USER\Software\Microsoft\Office\OneNote\AddIns\CSOneNoteRibbonAddIn.Connect]"LoadBehavior"=dword:00000003"FriendlyName"="OneNoteRibbionAddIn""Description"="OneNote2010 功能区外接程序示例"

OneNote 为继承自定义的 IDTExtensibility 接口的功能区控件

与自定义 OneNote 中的功能区控件运行以下代码,以使连接类继承的IRibbonExtensibility接口,并实现GetCustomUI方法:
/// <summary>        ///     Loads the XML markup from an XML customization file         ///     that customizes the Ribbon user interface.        /// </summary>        /// <param name="RibbonID">The ID for the RibbonX UI</param>        /// <returns>string</returns>        public string GetCustomUI(string RibbonID)        {            return Properties.Resources.customUI;        }

功能区控件的按钮的自定义图标和实现的功能

运行以下代码,以实现在 customUI.xml 文件中的OnGetImageShowForm的方法:
/// <summary>        ///     Implements the OnGetImage method in customUI.xml        /// </summary>        /// <param name="imageName">the image name in customUI.xml</param>        /// <returns>memory stream contains image</returns>        public IStream OnGetImage(string imageName)        {            MemoryStream stream = new MemoryStream();            if (imageName == "showform.png")            {                Resources.ShowForm.Save(stream, ImageFormat.Png);            }             return new ReadOnlyIStreamWrapper(stream);        }         /// <summary>        ///     show Windows Form method        /// </summary>        /// <param name="control">Represents the object passed into every        /// Ribbon user interface (UI) control's callback procedure.</param>        public void ShowForm(IRibbonControl control)        {            OneNote.Window context = control.Context as OneNote.Window;            CWin32WindowWrapper owner =                new CWin32WindowWrapper((IntPtr)context.WindowHandle);            TestForm form = new TestForm(applicationObject as OneNote.Application);            form.ShowDialog(owner);             form.Dispose();            form = null;            context = null;            owner = null;                       GC.Collect();            GC.WaitForPendingFinalizers();            GC.Collect();        }

使用 OneNote 2010 对象模型来获得 OneNote 页标题

添加 Microsoft OneNote 14.0 对象库的引用,然后再将嵌入互操作类型属性设置为False:
/// <summary>        /// Get the title of the page        /// </summary>        /// <returns>string</returns>        private string GetPageTitle()        {            string pageXmlOut = GetActivePageContent();                    var doc = XDocument.Parse(pageXmlOut);            string pageTitle = "";            pageTitle = doc.Descendants().FirstOrDefault().Attribute("ID").NextAttribute.Value;             return pageTitle;        }

技术类别

Office 开发

语言

此代码示例有以下编程语言:
语言项目名称
C#COneNoteRibbonAddIn
Visual Basic.NETVBOneNoteRibbonAddIn

先决条件

若要运行此代码示例,必须安装以下产品:
  • Microsoft Visual Studio 2010
  • Microsoft Visual Studio Tools for Microsoft Office 2010
  • Microsoft OneNote 2010

标记

  • OneNote 2010 功能区外接程序
  • COM 外接程序
  • IDTExtensibility
  • OneNote 2010 对象模型

参考

有关 COM 外接程序的应用程序来修改用户界面的详细信息,请访问下面的 MSDN 网站: 有关 OneNote 2010 和 Visual Studio2010 兼容性问题的详细信息,请访问下面的 MSDN 博客: 有关如何创建 OneNote 2010 COM 外接程序应用程序的详细信息,请访问下面的 Microsoft 网站:

更多信息


多功能一体代码框架是什么?

多功能一体代码框架通过使用不同的编程语言中的代码示例显示大多数 Microsoft 开发技术。 每个示例是仔细选择、 编写,并且记录下来,以显示一个通用的代码方案。 多功能一体代码框架有关的详细信息,请访问下面的 Microsoft 网站:

如何找到更多的多功能一体代码框架示例

要找到更多的多功能一体框架代码示例,请搜索"kbcodefx"以及相关的关键字在 Microsoft 支持网站。 或者,请访问下面的 Microsoft 网站:
快速发布免责声明
微软公司和/或其相应的供应商进行关于适用性、 可靠性或准确性的信息和相关的图形包含本文所述的任何表示。 所有此类信息和相关的图形被提供"按原样",没有任何形式的担保。 微软和/或其相应的供应商特此不作出任何担保和与该信息有关的状况和相关的图形,包括所有的暗示的担保和条件的商业性、 适于特定目的,workmanlike投入、 标题和非侵权性。 您明确同意,在任何情况 Microsoft 或其供应商应承担责任的任何直接、 间接、 惩罚性的偶然、 特殊、 后果性的损害赔偿或任何损害任何包括但不限于,使用中,数据的损失或利润,损失掉的或以任何方式使用或无法使用的信息和相关的图形包含本文所述,无论是基于合同、 民事侵权行为、 过失、 严格责任还是其他方式,即使 Microsoft 或其供应商的任何已连接建议赔偿的可能性。