应用程序接口 (OneNote)

Application 界面包括相关的方法,可帮助检索、处理和更新 OneNote 信息与内容。 这些方法通常分为四类:

  • 笔记本结构 - 使用笔记本结构的方法,包括用于发现、打开、修改、关闭和删除笔记本、分区组和分区的方法。

  • 页面内容 - 处理页面和页面内容的方法,包括用于发现、修改、保存和删除页面内容的方法。 页面内容包括二进制对象(如墨迹和图像)和文本对象(如边框)。

  • 导航 – 用于查找、链接到页面和对象以及导航到页面和对象的方法。

  • 功能 - 在 OneNote 中执行特定操作或设置参数的所有其他方法。

此外,应用程序 接口包含许多 属性事件

笔记本结构方法

通过本节中介绍的方法,可以发现、打开、修改、关闭和删除 OneNote 笔记本、节组和节。

GetHierarchy 方法

说明
说明
获取笔记本节点层次结构,从您指定的节点开始(所有笔记本或单个笔记本、节组或节),并向下扩展到指定级别的所有后代。
语法
HRESULT GetHierarchy(
[in]BSTR bstrStartNodeID,
[in]HierarchyScope hsScope,
[out]BSTR * pbstrHierarchyXmlOut,
[in,defaultvalue(xs2013)]XMLSchema xsSchema);
参数
bstrStartNodeID – 节点 (笔记本、分区组或分区) 所需的后代。 如果传递 null 字符串 (""),则该方法将获取根节点下的所有节点(即所有笔记本、节组和节)。 如果指定笔记本、节组或节节点,则该方法仅获取该节点的后代。
hsScope – 所需的最低后代节点级别。 例如,如果指定页面,则该方法将获取该页面级别下的所有节点。 如果您指定节,该方法将仅获取笔记本下的节节点。 有关详细信息,请参阅枚举主题中的 HierarchyScope 枚举。
pbstrHierarchyXmlOut – (Output 参数) 指向希望 OneNote 在其中写入 XML 输出的字符串的指针。
xsSchema – (可选) 要输出的 OneNote XML 架构(类型 为 XMLSchema)的版本。 您可以指定您需要 XML 架构版本 2013、2010、2007 还是当前版本。
注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

默认情况下,GetHierarchy 方法返回 OneNote 2013 XML 格式的字符串,或者您可以使用可选的 xsSchema 参数设置首选 XML 架构版本。

根据您传递的参数, GetHierarchy 方法可能返回各种列表(例如,所有笔记本、所有笔记本中的所有节、指定节中的所有页面或指定笔记本中的所有页面)。 对于每个节点,返回的 XML 字符串会提供相关属性(例如,节或页面标题、ID 和最后修改时间)。

并非开始节点和范围的所有组合均有效。 例如,如果您指定节起始节点和笔记本范围, GetHierarchy 将返回一个无效结果,因为笔记本在节点层次结构中高于节。

以下 C# 示例说明了如何使用 GetHierarchy 方法获取向下到页面级别的整个 OneNote 层次结构,包括所有笔记本。 它将输出字符串复制到剪贴板,您可从中将字符串粘贴到文本编辑器以进行检查。

static void GetEntireHierarchy()
    {
        String strXML;
        OneNote.Application onApplication = new OneNote.Application();
        onApplication.GetHierarchy(null, 
            OneNote.HierarchyScope.hsPages, out strXML);
        Clipboard.SetText(strXML);
        MessageBox.Show("The XML has been copied to the clipboard");
    }

UpdateHierarchy 方法

说明
说明 修改或更新笔记本的层次结构。 例如,您可以向笔记本添加节或节组、添加新笔记本、在笔记本内移动节,更改节名称、向节添加页面或更改节内页面的顺序。
语法 HRESULT UpdateHierarchy(
[in]BSTR bstrChangesXmlIn,
[in,defaultvalue(xsCurrent)] XMLSchema xsSchema);
参数 bstrChangesXmlIn – 一个字符串,其中包含指定要进行的层次结构更改的 OneNote XML 代码。 例如,如果要插入新节,则可以在 XML 字符串中添加元素,以指示要添加新节的位置。 或者,如果要更改现有节的名称,则可以保留相同的节 ID,并在 XML 代码中更改其名称属性。

xsSchema – (可选) 字符串 bstrChangesXmln 的 OneNote 架构版本。 此可选值用于指定 bstrChangesXmlIn 字符串位于的 OneNote XML 架构的版本。 如果未指定此值,OneNote 将假定 XML 位于架构版本 xsCurrent 中

注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

如果只为 bstrChangesXmlIn 参数传递部分 OneNote XML 字符串,OneNote 会尝试推断所需的更改。 例如,如果您提供了一个仅包含一个节的 Notebook 元素,OneNote 将在任何现有节后面添加节。 但是,如果您指定的操作有歧义,结果则很难确定。 例如,如果某个现有笔记本包含四个节,且您传递的 XML 字符串包括笔记本和仅第四和第一个节(按此顺序),OneNote 可能会将第二和第三个节放在第四个节之前或第一个节之后。

不能使用 UpdateHierarchy 方法删除笔记本的一部分。 也就是说,传递仅包含现有层次结构的一部分的 XML 字符串不会删除字符串中未包含的部分。 若要删除层次结构的一部分,请使用 DeleteHierarchy 方法。

以下 C# 代码显示了通过更改现有节的名称,使用 UpdateHierarchy 方法更改 OneNote 层次结构的一种方式。 它从 C 盘根目录一个名为 ChangeSectionName.xml 的示例文件中读取 XML 代码,将其加载到 XML 文档,然后将该文档的 XML 结构传递给方法。

static void UpdateExistingHierarchy()
    {
        OneNote.Application onApplication = new OneNote.Application();
        
        // Get the XML from the file.
        XmlTextReader reader = new XmlTextReader("C:\\ChangeSectionName.xml");
        reader.WhitespaceHandling = WhitespaceHandling.None;
        XmlDocument xmlDocIn = new XmlDocument();
        xmlDocIn.Load(reader);
        
        // Update the hierarchy.
        onApplication.UpdateHierarchy(xmlDocIn.OuterXml,
        OneNote.XMLSchema.xs2007);   
    }

以下 XML 代码摘自之前的 C# 代码传递到方法的 ChangeSectionName.xml 文件。 当 XML 传递到 UpdateHierarchy 方法时,它会更改现有层次结构中某个节的名称(通过将 name 属性的值更改为"My Renamed Section")。 然后它删除所有节,除了更改了名称的节以外。 此外,代码将从目标 Section 元素中删除不必要的属性,包括 lastModifiedTimeisCurrentlyViewedcolor 属性,仅将 nameIDpath 属性保持不变。

<?xml version="1.0" ?> 
    <one:Notebooks xmlns:one="http://schemas.microsoft.com/office/onenote/12/2004/onenote"> 
        <one:Notebook name="My Notebook" nickname="My Notebook" ID="{0B8E7305-AC2C-4BCB-8651-1CDA55AAE14C}{1}{B0}"> 
            <one:Section name="My Renamed Section" ID="{5F4E2908-44BA-4C02-91FE-49FC665E9A33}{1}{B0}" path="C:\My Section.one" /> 
        </one:Notebook> 
    </one:Notebooks>

以上 XML 代码是使用 GetHierarchy 方法的示例中所示的代码获取的,我们如下所述对其进行了修改,以将范围限制到节。

static void GetAllSections()
    {
        String strXML;
        OneNote.Application onApplication = new OneNote.Application();
        onApplication.GetHierarchy(System.String.Empty, 
            OneNote.HierarchyScope.hsSections, out strXML);
        Clipboard.SetText(strXML.ToString());
        MessageBox.Show("The XML has been copied to the Clipboard");
    }

以下 C# 示例演示了一个完整的控制台应用程序,该应用程序搜索名为“”Sample_Section的节,提示用户输入节的新名称,然后使用 UpdateHierarchy 方法将分区名称更改为用户键入的名称。 在运行代码之前,请将“”Sample_Section更改为 OneNote 层次结构中存在的分区的名称。

    static void Main(string[] args)
    {
        
        // OneNote 2013 Schema namespace.
        string strNamespace = "http://schemas.microsoft.com/office/onenote/2013/onenote";
        string outputXML;
        Application onApplication = new Application();
        onApplication.GetHierarchy(null, HierarchyScope.hsSections, out outputXML);
        // Load a new XmlDocument.
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(outputXML);
        XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
            nsmgr.AddNamespace("one", strNamespace);
        // Search for the section named "Sample_Section".
        XmlNode xmlNode = xmlDoc.SelectSingleNode("//one:Section[@name='Sample_Section']", nsmgr);
        // Prompt for a new section title.
        System.Console.Write("Please enter a new title for the section: ");
        string input = System.Console.ReadLine();
        xmlNode.Attributes["name"].Value = input; 
        // Update the section with the new title.
        onApp.UpdateHierarchy(xmlNode.OuterXml);
        System.Console.Write("Done!\n");
    }

OpenHierarchy 方法

说明
说明
打开您指定的节组或节。
语法
HRESULT OpenHierarchy(
[in]BSTR bstrPath,
[in]BSTR bstrRelativeToObjectID,
[out]BSTR * pbstrObjectID,
[in,defaultvalue(cftNone)]CreateFileType cftIfNotExist);
参数
bstrPath – 要打开的路径。 对于笔记本或笔记本中的节组,bstrPath 可能是文件夹路径或 .one 节文件的路径。 如果指定 .one 节文件的路径,则必须在文件路径字符串中包含 .one 扩展名。
bstrRelativeToObjectID – 希望在其中打开新对象的父对象的 OneNote ID (笔记本或分区组) 。 如果 bstrPath 参数是绝对路径,则可以为 bstrRelativeToObjectID 传递空字符串 ("")。 或者,您也可以传递应包含想要创建的对象(节或节组)的笔记本或节组的对象 ID,然后指定您希望在该父对象下创建的对象的文件名(例如 section1.one)。
pbstrObjectID – (Output 参数) OneNote 为 OpenHierarchy 方法打开的笔记本、分区组或分区返回的对象 ID。 此参数是指向你希望方法将 ID 写入其中的字符串的指针。
cftlfNotExist – (可选) CreateFileType 枚举中的枚举值。 如果传递 cftIfNotExist 的值,则仅当文件尚不存在时, OpenHierarchy 方法才会在指定路径上创建节组或节文件。

如果指定打开的笔记本中没有的节组, OpenHierarchy 方法会将该节组作为笔记本打开。 如果您指定的节不在打开的笔记本中, OpenHierarchy 方法将打开"最近打开的节"节组中的节。 如果您指定的节组或节已在打开的笔记本中,则不会发生任何结果,因为节组或节也已打开。 不管在什么情况下, OpenHierarchy 都会返回您指定的节组、笔记本或节的对象 ID,以便在其他操作中使用。

您还可以使用 OpenHierarchy 方法创建新节,而不是通过导入 XML 来创建。

以下代码显示了如何使用 OpenHierarchy 方法在"工作"笔记本中打开"会议"节并获取该节的 ID。 如果该节尚不存在,OneNote 将在您指定的位置进行创建。

static void OpenSection()
    {
        String strID;
        OneNote.Application onApplication = new OneNote.Application();
        onApplication.OpenHierarchy("C:\\Documents and Settings\\user\\My Documents\\OneNote Notebooks\\Work\\Meetings.one", 
        System.String.Empty, out strID, OneNote.CreateFileType.cftSection);
    }

DeleteHierarchy 方法

说明
说明
从 OneNote 笔记本层次结构中删除任何层次结构对象(节组、节或页面)。
语法
HRESULT DeleteHierarchy(
[in]BSTR bstrObjectID,
[in,defaultvalue(0)]DATE dateExpectedLastModified,
[in,defaultvalue(false)]VARIANT_BOOL deletePermanently);
参数
bstrObjectID – 要删除的对象的 OneNote ID。 对象可以是节组、节或页面。
dateExpectedLastModified - (可选) 你认为要删除的对象上次修改的日期和时间。 如果您为此参数传递一个非零值,OneNote 将继续更新,前提是仅当您传递的值与对象上次修改的实际日期和时间匹配。 为此参数传递一个值有助于防止意外覆盖自上次对象修改以来用户所做的编辑。
deletePermanently – (可选) true 以永久删除内容; 为 false ,将相应笔记本的内容移动到 OneNote 回收站, (默认) 。 如果笔记本是 OneNote 2007 格式,则不存在回收站,因此会永久删除内容。

CreateNewPage 方法

说明
说明
向您指定的节添加新页面。 新页面添加为节的最后一页。
语法
HRESULT CreateNewPage(
[in]BSTR bstrSectionID,
[out]BSTR * pbstrPageID);
[in,defaultvalue(npsDefault)]NewPageStyle npsNewPageStyle);
参数
bstrSectionID – 包含要在其中创建新页面的分区的 OneNote ID 的字符串。
pbstrPageID – (Output 参数) 指向方法写入新创建页面 OneNote ID 的字符串的指针。
npsNewPageStyleNewPageStyle 枚举中的一个值,该值指定要创建的页面的样式。

为了方便,OneNote API 包含 CreateNewPage 方法。 您可以实现相同的结果,同时对新页面在层次结构中的放置进行更好的控制,方法是调用 UpdateHierarchy 方法。 UpdateHierarchy 方法还允许您在创建新页面的同时创建子页面。

CloseNotebook 方法

说明
说明
关闭指定的笔记本。
语法
HRESULT CloseNotebook(
[in]BSTR bstrNotebookID,
[in,defaultvalue(false)]VARIANT_BOOL force);
参数
bstrNotebookID – 要关闭的笔记本的 OneNote ID。
force - (可选) true 以关闭笔记本,即使笔记本中存在 OneNote 在关闭前无法同步的更改;否则, false (默认) 。

您可以使用 CloseNotebook 方法关闭您指定的笔记本。 当调用此方法时,会将任何脱机文件与当前的笔记本内容同步,然后根据需要关闭指定的笔记本。 该方法返回后,该笔记本将不会再显示在 OneNote 用户界面 (UI) 上打开的笔记本列表中。

GetHierarchyParent 方法

说明
说明
获取某个 OneNote 对象的父对象的 OneNote ID。
语法
HRESULT GetHierarchyParent (
[in]BSTR bstrObjectID,
[out]BSTR * pbstrParentID);
参数
bstrObjectID – 包含要查找其父对象的对象的 OneNote ID 的字符串。
pbstrParentID – (Output 参数) 指向方法写入父对象的 OneNote ID 的字符串的指针。

如果 OneNote 对象没有父对象(例如,当用户想要获取笔记本的父对象时),将抛出一个异常。

GetSpecialLocation 方法

说明
说明
查找 OneNote 在其中存储某些特殊项目(例如备份、未归档笔记和默认笔记本)的位置的路径。
语法
HRESULT GetSpecialLocation(
[in]SpecialLocation slToGet,
[out]BSTR * pbstrSpecialLocationPath);
参数
slToGet – 指定要获取的特殊文件夹位置的 SpecialLocation 枚举值之一。
pbstrSpecialLocationPath – (Output 参数) 指向希望 OneNote 在其中写入特殊文件夹路径的字符串的指针。

You can use this method to determine the location on disk of the Unfiled Notes folder. That is the folder in which OneNote stores notes that are created when you drag an item into OneNote, as well as notes that come directly from other applications (such as those that result when you click Send to OneNote in Microsoft Outlook or Microsoft Internet Explorer).

页面内容方法

此部分中所述的方法使您可以发现、更新和删除 OneNote 笔记本中页面上的内容,也可发布 OneNote 内容。

GetPageContent 方法

说明
说明 获取指定页面的所有内容(OneNote XML 格式)。
语法 HRESULT GetPageContent(
[in]BSTR bstrPageID,
[out]BSTR * pbstrPageXmlOut,
[in,defaultvalue(piBasic)]PageInfo pageInfoToExport,
[in,defaultvalue(xsCurrent)]XMLSchema xsSchema);
参数 bstrPageId – 要获取其内容的页的 OneNote ID。

pbstrPageXmlOut – (Output 参数) 指向希望 OneNote 在其中写入 XML 输出的字符串的指针。

pageInfoToExport – (可选) 指定 GetPageContent 方法是否返回嵌入 XML 代码和 base-64 编码的二进制内容。 例如,二进制内容可以包括图像和墨迹数据。 pageInfoToExport 参数还指定是否在 GetPageContent 方法返回的 XML 代码中标记选择。 它从 PageInfo 枚举中获取枚举值。

xsSchema – (可选) 要输出的 OneNote XML 架构(类型 为 XMLSchema)的版本。 您可以指定您需要 XML 架构版本 2013、2010、2007 还是当前版本。

注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

默认情况下,为了避免返回的 XML 字符串过长,OneNote 不会在 XML 代码中嵌入二进制内容。 出于相同的原因,它不会使用选择属性标记当前选择。 二进制对象的标记中包括 OneNote ID。 要获取二进制对象,您可以调用 GetBinaryPageContent 方法并向其传递从 GetPageContent 方法获取的 OneNote ID。 如果您并非立即需要二进制数据,可使用 GetPageContent 方法。

UpdatePageContent 方法

说明
说明 更新或修改页面上的内容。
语法 HRESULT UpdatePageContent(
[in]BSTR bstrPageChangesXmlIn,
[in,defaultvalue(0)]DATE dateExpectedLastModified,
[in,defaultvalue(xsCurrent)]XMLSchema xsSchema,
[in,defaultvalue(false)]VARIANT_BOOL force);
参数 bstrPageChangesXmlIn – 包含 OneNote XML 代码的字符串,其中包含要对页面所做的更改。

dateExpectedLastModified - (可选) 你认为要更新的页面上次修改的日期和时间。 如果你为此参数传递一个非零值,OneNote 将继续更新,前提是仅当你传递的值与页面上次修改的实际日期和时间匹配。 为此参数传递一个值有助于防止意外覆盖自上次页面修改以来用户所做的编辑。

xsSchema – (可选) 要输出的 OneNote XML 架构(类型 为 XMLSchema)的版本。 你可以指定需要 XML 架构版本 2013、2010、2007 还是当前版本。

注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

force(可选)设置为 true 可更新页面内容,即使页面上有来自 OneNote 未来版本的未知数据;否则,设置为 false(默认设置)。

您可以使用此方法以多种方式修改页面。 例如,您可以使用 UpdatePageContent 方法向页面添加轮廓、更改轮廓的内容、添加图像、添加墨迹、移动内容或修改轮廓中的文本。

更具体地说,您可以使用 GetPageContent 方法导入现有页面,对页面的 XML 代码进行一些更改,然后使用 UpdatePageContent 方法再次导入整个页面。 或者,您可以使用此方法在现有页面底部添加新页面对象,例如图像。

在您传递到 UpdatePageContent 方法的 XML 代码中,您唯一必须包含的对象是已经更改的页面级别对象(例如轮廓、页面上的图像或页面上的墨迹)。 此方法不会修改或删除未在 bstrPageChangesXmlIn 参数中指定的页面级对象。 该方法会完全替换 ID 与所传递对象匹配的页面级别对象。 因此,您必须在代码中完整指定所有页面级别对象,包括现有内容以及您想对其所做的更改。

例如,如果您的页面包含轮廓和背景页面图像,您可以替换轮廓并将图像保留不变,方法是在 XML 代码中完全指定轮廓、使用现有轮廓的 ID 且不在代码中包含图像。 因为您在代码中修改的轮廓完全替换了现有轮廓,您必须包含轮廓的完整内容。

此外, UpdatePageContent 方法仅修改 在 bstrPageChangesXmlIn 参数中指定的元素属性。 例如,如果您指定了 PageSettings 元素的部分但并非全部属性,您未指定的属性将保留不变。

以下示例说明如何使用 UpdatePageContent 方法更改页面的标题并向页面添加示例文本。 在运行此代码之前,将代码中显示的页面 ID 替换为有效的页面 ID,以便代码可在您的计算机上正常运行。 您可以使用 GetHierarchy 方法并检查输出,以获取页面的页面 ID。

static void UpdatePageContent()
    {
        OneNote.Application onApplication = new OneNote.Application();
        String strImportXML;
        strImportXML = "<?xml version=\"1.0\"?>" +
            "<one:Page xmlns:one=\"http://schemas.microsoft.com/office/onenote/12/2004/onenote\" 
            ID=\"{3428B7BB-EF39-4B9C-A167-3FAE20630C37}{1}{B0}\">" +
            "    <one:PageSettings RTL=\"false\" color=\"automatic\">" +
            "        <one:PageSize>" +
            "            <one:Automatic/>" +
            "        </one:PageSize>" +
            "        <one:RuleLines visible=\"false\"/>" +
            "    </one:PageSettings>" +
            "    <one:Title style=\"font-family:Calibri;
                 font-size:17.0pt\" lang=\"en-US\">" +
            "        <one:OE alignment=\"left\">" +
            "            <one:T>" +
            "                <![CDATA[My Sample Page]]>" +
            "            </one:T>" +
            "        </one:OE>" +
            "    </one:Title>" +
            "    <one:Outline >" +
            "        <one:Position x=\"120\" y=\"160\"/>" +
            "        <one:Size width=\"120\" height=\"15\"/>" +
            "        <one:OEChildren>" +
            "            <one:OE alignment=\"left\">" +
            "                <one:T>" +
            "                    <![CDATA[Sample Text]]>" +
            "                </one:T>" +
            "            </one:OE>" +
            "        </one:OEChildren>" +
            "    </one:Outline>" +
            "</one:Page>";
        // Update the page content.
        onApplication.UpdatePageContent(strImportXML, System.DateTime.MinValue);
    }

GetBinaryPageContent 方法

说明
说明
在 OneNote 页面上返回二进制对象(例如墨迹或图像)作为 base-64 编码的字符串。
语法
HRESULT GetBinaryPageContent(
[in]BSTR bstrPageID,
[in]BSTR bstrCallbackID,
[out]BSTR * pbstrBinaryObjectB64Out);
参数
bstrPageID – 包含要获取的二进制对象的页面的 OneNote ID。
bstrCallBackID – 要获取的二进制对象的 OneNote ID。 此 ID 称为 callbackID,位于 GetPageContent 方法返回的页面的 OneNote XML 代码中。
pbstrBinaryObectB64Out – (Output 参数) 指向 OneNote 将二进制对象作为 base-64 编码字符串写入其中的字符串的指针。

DeletePageContent 方法

说明
说明
从页面中删除对象(如 大纲墨迹图像 对象)。
语法
HRESULT DeletePageContent(
[in]BSTR bstrPageID,
[in]BSTR bstrObjectID,
[in,defaultvalue(0)]DATE dateExpectedLastModified,
[in,defaultvalue(#)]VARIANT_BOOL force);
参数
bstrPageID – 包含要删除的对象的页面的 OneNote ID。
bstrObjectID – 要删除的对象的 OneNote ID。
dateExpectedLastModified - (可选) 你认为包含要删除的内容的页面是上次修改的日期和时间。 如果您为此参数传递一个非零值,OneNote 将继续删除,前提是仅当您传递的值与页面上次修改的实际日期和时间匹配。 为此参数传递一个值有助于防止意外覆盖自上次页面修改以来用户所做的编辑。
force - (可选) true 以更新页面内容,即使页面上有来自未来 OneNote 版本的未知数据;否则, false (默认) 。

Publish 方法

说明
说明
将您指定的页面导出到 OneNote 支持的任何格式的文件。
语法
HRESULT Publish(
[in]BSTR bstrHierarchyID,
[in]BSTR bstrTargetFilePath,
[in,defaultvalue(pfOneNote)]PublishFormat pfPublishFormat,
[in,defaultvalue(0)]BSTR bstrCLSIDofExporter);
参数
bstrHierarchyID – 要导出的层次结构的 OneNote ID。
bstrTargetFilePath – 要保存生成的输出文件的位置的绝对路径。 你指定的文件必须是该位置尚不存在的文件。
pfPublishFormatPublishFormat 枚举值之一,该值指定要将已发布页面 (的格式,例如 MTHML、PDF 等) 。
bstrCLSIDofExporter – (CLSID) 可导出 Microsoft Windows 增强型图元文件 (.emf) 的已注册 COM 应用程序的类 ID。 COM 应用程序必须实现 IMsoDocExporter 接口。 包含此参数是为了允许第三方开发人员写入自己的代码以使用自定义格式发布 OneNote 内容。 有关 IMsoDocExporter 界面的详细信息,请参阅 扩展 Office 2007 固定格式导出功能

当前 OneNote 支持以下文件格式:

  • MHTML 文件 (.mht)
  • Adobe Acrobat PDF 文件 (.pdf)
  • XML Paper Specification (XPS) 文件 (.xps)
  • OneNote 2013、2010 或 2007 文件 (.one)
  • OneNote Package 文件 (.onepkg)
  • Microsoft Word 文档(.doc 或 .docx)
  • Microsoft Windows 增强型图元文件 (.emf)
  • HTML 文件 (.html)

此方法产生的结果与你通过单击 UI 中的“发布”并指定格式获取的结果完全相同。

此部分中所述的方法使您可以查找、导航到并链接到 OneNote 笔记本、节组、节、页面和页面对象。

说明
说明
导航到指定对象(例如节、页面和页面中的 Outline 元素)。
语法
HRESULT NavigateTo(
[in]BSTR bstrHierarchyObjectID,
[in,defaultvalue(#)]BSTR bstrObjectID,
[in,defaultvalue(0)]VARIANT_BOOL fNewWindow);
参数
bstrHierarchyObjectID – 要在 OneNote 层次结构中导航到的对象的 OneNote ID。
bstrObjectID – 要在 OneNote 页面上导航到的对象的 OneNote ID。
fNewWindow – (可选) true 以在新 OneNote 窗口中打开指定的对象。 设置为 false 不会打开一个新的 OneNote 窗口(如果已打开一个窗口)。
说明
说明
如果传递的 OneNote 链接 (onenote: / /),在 OneNote 中打开 OneNote 窗口到相应位置。 如果链接位于 OneNote ((如 https:// 或 file://) )的外部,则将显示一个安全对话框。 解除后,OneNote 将尝试打开链接,此时会返回 HResult.hrObjectDoesNotExist 错误。
语法
HRESULT NavigateTo(
[in]BSTR bstrUrl,
[in,defaultvalue(0)]VARIANT_BOOL fNewWindow);
参数
bstrUrl – 指示导航到的位置的字符串。 这可以是 OneNote 链接,也可以是任何其他 URL,例如 Web 链接或网络位置。
fNewWindow – (可选) true ,以在新的 OneNote 窗口中打开指定的 URL。 设置为 false 不会打开一个新的 OneNote 窗口(如果已打开一个窗口)。

GetHyperLinkToObject 方法

说明
说明
获取指定笔记本、节组、节、页面或页面对象的 OneNote 超链接。
语法
HRESULT GetHyperlinkToObject(
[in] BSTR bstrHierarchyID,
[in] BSTR bstrPageContentObjectID,
[out] BSTR * pbstrHyperlinkOut);
参数
bstrHierarchyID – 需要超链接的笔记本、分区组、分区或页面的 OneNote ID。
bstrPageContentObjectID – (可选) 需要超链接的页面内对象的 OneNote ID。 例如,对象可以是边框或 Outline 元素。 如果您传递空字符串 (""),返回的链接将指向在 bstrHierarchyID 参数中指定的笔记本、节组、节或页面。 如果为 bstrPageContentObjectID 参数传递非空字符串,则 _bstrHierarchyID参数必须是对包含指定对象的页面的引用。
pbstrHyperlinkOut – (Output 参数) 指向 GetHyperlinkToObject 方法向其写入输出超链接文本的字符串的指针。

当你尝试导航到生成的链接时,OneNote 将在浏览器中打开并显示指定的对象。

GetWebHyperlinktoObject 方法

说明
说明
返回在 OneNote Web 客户端中打开的对象的超链接。
语法
HRESULT GetWebHyperlinkToObject (
[in] BSTR bstrHierarchyID,
[in] BSTR bstrPageContentObjectID,
[out] BSTR * pbstrHyperlinkOut);
参数
bstrHierarchyID – 需要为其提供 Web 超链接的笔记本、分区组、分区或页面的 OneNote ID。
bstrPageContentObjectID – (可选) 需要超链接的页面内对象的 OneNote ID。 例如,对象可以是边框或 Outline 元素。 如果您传递空字符串 (""),返回的链接将指向在 bstrHierarchyID 参数中指定的笔记本、节组、节或页面。 如果为 bstrPageContentObjectID 参数传递非空字符串,则 _bstrHierarchyID参数必须是对包含指定对象的页面的引用。
pbstrHyperlinkOut – (Output 参数) 指向 GetWebHyperlinkToObject 方法写入输出超链接文本的字符串的指针。 如果无法为笔记本创建 Web 超链接,则返回 null 值。

FindPages 方法

说明
说明 返回与指定查询词匹配的页面的列表。
语法 HRESULT FindPages(
[in]BSTR bstrStartNodeID,
[in]BSTR bstrSearchBSTR,
[out]BSTR * pbstrHierarchyXmlOut,
[in,defaultvalue(#)]VARIANT_BOOL fIncludeUnindexedPages,
[in,defaultvalue(0)]VARIANT_BOOL fDisplay,
[in,defaultvalue(#)]XMLSchema xsSchema);
参数 bstrStartNodeID – 节点 (根、笔记本、分区组或下面要搜索内容的分区) 。 此参数设置搜索的范围。

bstrSearchString – 搜索字符串。 传递与你在 OneNote UI 的搜索框中键入的字符串完全相同的字符串。 可以使用按位运算符,例如 ANDOR,它们必须全部为大写。

pbstrHierarchyXmlOut – (Output 参数) 指向希望 OneNote 在其中写入输出 XML 字符串的字符串的指针。 生成的 XML 字符串包含从根向下到包含与搜索字符串匹配的任何页面的笔记本层次结构。 例如,FindPages 方法不会列出层次结构中没有页面匹配的节。 此外,如果单个节中只有一个页面与字符串匹配,则返回的层次结构包括该节和页面的路径,但不包括笔记本层次结构的任何其他部分。

fIncludeUnindexedPages – (可选) true ,用于搜索尚未由 Windows 搜索编制索引的页面;否则为 false

fDisplay – (可选) true ,还可以在 UI 中为用户运行搜索,就像用户自己键入一样。 设置为 false 则在不更改 UI 的情况下执行查询(默认设置)。

xsSchema – (可选) 字符串 pbstrHierarchyXmlOut 的 OneNote 架构版本。 此可选值用于指定包含 pbstrHierarchyXmlOut 字符串的 OneNote XML 架构的版本。 如果未指定此值,OneNote 将假定 XML 位于架构版本 xsCurrent 中

注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

仅当您已在计算机上安装 Microsoft Search 3.0 或 4.0 时, FindPages 才能正常运行。 Windows Vista 和 Windows 7 包括此组件。 但是,如果您运行 Windows 的早期版本,则必须安装 Windows Search 才能使 FindPages 正常运行。

FindMeta 方法

说明
说明 返回包含与指定查询词匹配的元数据的 OneNote 对象列表。
语法 HRESULT FindMeta (
[in]BSTR bstrStartNodeID,
[in]BSTR bstrSearchBSTRName,
[out]BSTR * pbstrHierarchyXmlOut,
[in,defaultvalue(#)]VARIANT_BOOL fIncludeUnindexedPages,
[in,defaultvalue(#)]XMLSchema xsSchema);
参数 bstrStartNodeID – 节点 (根、笔记本、分区组或下面要搜索内容的分区) 。 此参数设置搜索的范围。

bstrSearchStringName – 搜索字符串。 传入元数据名称的任何部分。 如果传入空字符串或 null 值,则具有元数据的所有对象将与查询匹配。

pbstrHierarchyXmlOut – (Output 参数) 指向希望 OneNote 在其中写入输出 XML 字符串的字符串的指针。 生成的 XML 字符串包含从根向下到包含与搜索字符串匹配的任何页面的笔记本层次结构。 例如,FindPages 方法不会列出层次结构中没有页面匹配的节。 此外,如果单个节中只有一个页面与字符串匹配,则返回的层次结构包括该节和页面的路径,但不包括笔记本层次结构的任何其他部分。
fIncludeUnindexedPages – (可选) true ,用于搜索尚未由 Windows 搜索编制索引的页面;否则为 false

xsSchema – (可选) 字符串 pbstrHierarchyXmlOut 的 OneNote 架构版本。 此可选值用于指定包含 pbstrHierarchyXmlOut 字符串的 OneNote XML 架构的版本。 如果未指定此值,OneNote 将假定 XML 位于架构版本 xsCurrent 中

注意:我们建议指定 OneNote ((如 xs2013) )的版本,而不是使用 xsCurrent 或将其留空,因为这将允许外接程序使用未来版本的 OneNote。

仅当您已在计算机上安装 Microsoft Windows Search 3.0 或 4.0 时, FindMeta 才能正常运行。 Windows Vista 和 Windows 7 包括此组件。 但是,如果您运行 Windows 的早期版本,则必须安装 Windows Search 才能使 FindMeta 正常运行。

功能性方法

本节中介绍的方法使你可以在 OneNote 应用程序中执行某些操作或设置参数。

MergeFiles 方法

说明
说明
允许用户将同一个文件的更改合并为一个。 要使文件被视为同一个,它们必须使用相同的 OneNote ID。
语法
HRESULT MergeFiles (
[in]BSTR bstrBaseFile,
[in]BSTR bstrClientFile,
[in]BSTR bstrServerFile,
[in]BSTR bstrTargetFile);
参数
bstrBaseFile – 文件初始状态的 .one 文件位置的路径字符串。
bstrClientFile – 服务器文件更改与基文件合并后,要与基文件合并的第二组更改的 .one 文件位置的路径字符串。
bstrServerFile – 要与基文件合并的第一组更改的 .one 文件位置的路径字符串。
bstrTargetFile – 包含合并更改的文件的 .one 文件位置的路径字符串。

MergeFiles 方法适用于可能存在多个版本的 OneNote 文件的移动方案。

MergeSections 方法

说明
说明
将一个节的内容合并到 OneNote 中的另一个节。
语法
HRESULT MergeSections (
[in]BSTR bstrSectionSourceId,
[in]BSTR bstrSectionDestinationId);
参数
bstrSectionSourceId – 要合并的节的 OneNote ID。
bstrSectionDestinationId – 要合并到的分区的 OneNote ID。 源节将合并到此目标节。

此方法执行的操作与你右键单击某个节时可见的合并到另一个节功能相同。

QuickFiling 方法

说明
说明
返回 IQuickFilingDialog 对话框的一个实例,可用于在 OneNote 层次结构树中选择位置。
语法
HRESULT QuickFiling (
);

SyncHierarchy 方法

说明
说明
强制 OneNote 将指定对象与磁盘上的源文件中同步。
语法
HRESULT SyncHierarchy (
[in]BSTR bstrHierarchyID);
参数
bstrHierarchyID – 要同步的对象的 OneNote ID。

SetFilingLocation 方法

说明
说明
允许用户指定应在 OneNote 中的什么位置以及如何归档特定类型的内容。
语法
HRESULT SetFilingLocation (
[in]FilingLocation flToSet,
[in]FilingLocationType fltToSet,
[in]BSTR bstrFilingSectionID);
参数
flToSet – 要设置的归档位置的对象类型。
fltToSet – 要在其中提交类型的位置。
bstrFilingSectionID – 要设置位置的分区或页面的 OneNote ID。 如果不适用,则用户可以传入 null 或空字符串。

The types of content that can be filed include Outlook items and Web Notes from Internet Explorer that are imported to OneNote through the Send to OneNote command in each application. The filing location of items that are printed into OneNote can also be set with this method.

属性

此部分介绍了 Application 界面的属性。

属性 说明
Windows
允许用户访问打开的 OneNote 窗口。 此属性允许用户通过一系列 OneNote 窗口进行枚举并修改特定的窗口属性。 有关详细信息,请参阅 Windows 界面
COMAddIns
返回 OneNote 的 COMAddIns 集合。 此集合包含 OneNote 可用的所有 COM 加载项。 COMAddins 集合的 Count 属性返回可用 COM 加载项的数量。有关详细信息,请参阅 COMAddIns 对象。
LanguageSettings
使您可以访问一些 API 以更改 OneNote 的公共语言设置。

活动

此部分介绍了 Application 界面的事件。

警告

当前无法在托管代码中添加事件。

OnNavigate 事件

说明
说明
允许用户指定在从当前 OneNote 位置离开以导航 OneNote UI 时要调用的函数。
语法
Event OnNavigate (
);

OnHierarchyChange 方法

说明
说明
允许用户指定在 OneNote 层次结构变更(例如,添加或删除页面,或移动各个节)时要调用的函数。 层次结构变更分批进行,因此如果同时或几乎同时发生了多个变更,OneNote 引发事件一次。
语法
Event OnHierarchyChange (
BSTR bstrActivePageID);
参数
bstrActivePageID – 传递活动页的 OneNote ID。

另请参阅