Dilan Shaminda Ответов: 2

Как получить положение курсора в microsoft.interop.word ?


Привет,

Я использую
using Microsoft.Office.Interop.Word;
сборка для того, чтобы получить доступ к файлам word и сделать некоторые вещи. Я хочу знать, есть ли какой-нибудь способ получить позицию символа, в которой в данный момент находится курсор.

Что я уже пробовал:

Ниже приведен код, который я использую

Object wordObject = null;
           Microsoft.Office.Interop.Word.Application word = null;
           Document document = null;

           try {
               wordObject = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");

               word = (Microsoft.Office.Interop.Word.Application)wordObject;
               word.Visible = false;
               word.ScreenUpdating = false;
               string fullPath = word.ActiveDocument.FullName;

               document = word.Documents.Open(fullPath);

               int count = document.Words.Count;
               for(int k = 1; k <= count; k++)
               {
                   string text = document.Words[k].Text;
                   MessageBox.Show(text);
               }

               if (document.Paragraphs.Count > 0)
               {
                   var paragraph = document.Paragraphs.First;
                   var lastCharPos = paragraph.Range.Sentences.First.End - 1;
                   MessageBox.Show(lastCharPos.ToString());
               }
               word.Quit();
           }
           catch(Exception ex)
           {
               MessageBox.Show(ex.ToString());
           }


здесь я получаю последнюю позицию символа первого абзаца. Но я хочу получить положение символа, в котором находится курсор в данный момент. Заранее спасибо!

Member 11380386

Никто не там, чтобы исправить эту проблему?

How to get the cursor position in microsoft.interop.word?

2 Ответов

Рейтинг:
2

Member 12734776

Здравствуйте вы используете это для получения диапазона положения курсора
Сначала должен быть активный документ

word_application.Selection.Range


Dave Kreskowiak

Я серьезно сомневаюсь, что ОП все еще ищет решение 2 года спустя.

Рейтинг:
18

Gerry Schmitz

Ваше приложение открыло вторую копию "активного документа" ... там нет значимой информации о курсоре.


Dilan Shaminda

Не могли бы вы объяснить это подробнее? Как я могу получить доступ к текущему активному документу?

Richard Deeming

Заменять:

document = word.Documents.Open(fullPath);

с:
document = word.ActiveDocument;


Вероятно, вы также захотите удалить вызов на word.Quit();, так как вы подключаетесь к уже запущенному экземпляру Word.