Я хотел бы иметь возможность:
Почему Я хочу сделать это? Я пытаюсь создать надстройку Word, которая действует аналогично проверке орфографии в том смысле, что она работает в фоновом режиме (под фоном я имею в виду регулярное кражу времени из основного потока Word с помощью SendMessage) и точно сканирует документ. текст «жетоны». Я хочу иметь возможность хранить коллекцию токенов и обновлять их по мере изменения документа. Конкретный пример этого: если пользователь редактирует данный абзац, я хочу повторно отсканировать абзац и обновить свою структуру данных, которая указывает на этот абзац. Если нет способа сопоставить абзац, в котором редактировал пользователь (т.е. абзац, в котором начинается диапазон выбора), и абзац, который я «сохранил» в структуре данных, я не могу этого сделать.
Пример кода для пункта № 1, выше
Если я напишу следующий код VBA:
Dim Para1 As Paragraph
Dim Para2a As Paragraph
Dim Para2b As Paragraph
Set Para1 = ActiveDocument.Paragraphs(1)
Set Para2a = Para1.Next
Set Para2b = Para1.Next.Next.Previous
If Para2a Is Para2b Then
Debug.Print ("Para2a Is Para2b")
Else
Debug.Print ("Para2a Is Not Para2b")
End If
Тогда я получаю результат:
"Para2a Is Not Para2b"
Что, возможно, физически верно (разные прокси COM), но не логически. Мне нужно сравнить эти абзацы и определить, являются ли они логически одним и тем же основным абзацем.
(Я планирую написать надстройку на C #, но приведенный выше код VBA демонстрирует тип проблемы, которую мне нужно преодолеть, прежде чем писать слишком много кода).
Надеюсь, что по пунктам 2 и 3 выше они не требуют пояснений.Скажем, у меня есть ссылка на абзац (прокси-сервер взаимодействия). Я хочу выяснить, «где» это в документе. Принадлежит ли он к разделу 1? Это в нижнем колонтитуле? Без этой возможности все, что я могу разумно сделать, чтобы понять, откуда что происходит, - это повторно сканировать весь документ при каждом изменении, что, конечно, абсурдно неэффективно и не будет достаточно своевременным для пользователя приложения.
Приветствую любые мысли! Я буду рад размещать дополнительную информацию по мере необходимости.