Использование позднего связывания для автоматизации Word вызывает исключение MissingMemberException - PullRequest
0 голосов
/ 01 декабря 2010

Я пытаюсь получить доступ к некоторой информации из запущенного приложения Microsoft Word, используя следующий код ..

object appClass = Marshal.GetActiveObject("Word.Application");
object documents = appClass.GetType().GetProperty("Documents");
object count = documents.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, documents, null);

Когда я запускаю этот код, он говорит мне, что этот счетчик не был найден и выдал MissingMemberException.

Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 01 декабря 2010

Вы не получили ссылку на объект Documents, GetProperty возвращает PropertyInfo.Исправление:

        object appClass = Marshal.GetActiveObject("Word.Application");
        object documents = appClass.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, appClass, null);
        object count = documents.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, documents, null);

Добавление ссылки на Microsoft.Office.Word.Interop может сделать этот лот менее болезненным.

...