API MSDN OneNote: переход на никогда ранее не открывавшуюся страницу, не открывая окно приложения OneNote.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 API MSDN OneNote: переход на никогда ранее не открывавшуюся страницу, не открывая окно приложения OneNote.

Сообщение Anonymous »

Моя цель — иметь возможность использовать C# для программного открытия любого файла раздела .one и получения всех идентификаторов страниц раздела. В простом случае (когда я создал и недавно использовал раздел) это можно сделать с помощью следующего кода:

Код: Выделить всё

using Microsoft.Office.Interop.OneNote;
class Program
{
public static void ProcessOnenoteFile()
{
Application onenoteApp = new Application();
string filepath = @"C:\Users\Admin\Documents\OneNote Notebooks\My Notebook\testsection.one";
string sectionId;
onenoteApp.OpenHierarchy(filepath, null, out sectionId);
string hierarchy;
onenoteApp.GetHierarchy(sectionId, HierarchyScope.hsPages, out hierarchy);
File.WriteAllText(@"C:\hierarchy.txt", hierarchy);
}
}
Здесь я могу проанализировать XML, чтобы найти все идентификаторы страниц, и все готово.

Однако проблема в том, что я хочу сделать это с файлами, которые я получаю от кого-то другого и никогда раньше не открывал. Когда я запускаю тот же код в этих файлах, я не могу найти идентификаторы страниц в иерархии и, следовательно, не могу обрабатывать ни одну страницу. Решение, которое, похоже, работает, — использовать метод NavigationTo, чтобы открыть файл раздела в OneNote, прежде чем пытаться получить иерархию.

Код: Выделить всё

 ...
string sectionId;
onenoteApp.OpenHierarchy(filepath, null, out sectionId);
onenoteApp.NavigateTo(sectionId);
string hierarchy
...
Однако это очень раздражает, поскольку мне нужно открыть приложение OneNote. Поскольку мне нужно обработать много файлов разделов .one, на экране будет мигать много случайной информации, которая не является необходимой и может сбить с толку конечных пользователей моей программы. Есть ли способ добиться того же результата, добавив идентификаторы страниц в иерархию без необходимости открывать приложение OneNote? По крайней мере, есть ли способ скрыть приложение?

ОБНОВЛЕНИЕ:

Я только что заметил, что использование команды «Опубликовать» также обновляет иерархию с помощью идентификаторов страниц, однако это решение по-прежнему не идеально, поскольку требует от меня создания другого файла.

Кроме того, присмотревшись к экспорту XML, я увидел, что существует атрибут под названием «areAllPagesAvailable», для которого у меня установлено значение false во всех файлах, которые мне еще предстоит открыть в OneNote.


Подробнее здесь: https://stackoverflow.com/questions/318 ... -a-onenote
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли API для автономной документации MSDN? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Отправьте PDF-файл в Acrobat Reader, чтобы распечатать его, не открывая/не показывая окно.
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как сделать ajax Post, не открывая страницу
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как сделать ajax Post, не открывая страницу
    Anonymous » » в форуме Jquery
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • События интерфейса приложения OneNote Com с Python
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»