Здравствуйте! Как я могу прочитать текст открытый в ворде с помощью Coded UI и сравнить с заданным?Используя при это объект страницы в UIMape. Заранее спасибо.
Самый простой и надежный способ получить текст из Ворда или doc файла – это использовать COM/ActiveX API.
Тут есть два пути.
Первый – через ранее связывание. В таком случае, вы добавляете COM объект ворда как референс, и вижуалстудия делает для него обвертку. Это хорошо тем, что у вас появится подсказка по методам при наборе кода. Это плохо тем, что такой механизм может быть не совместим со всеми версиями Ворда.
Вот пример раннего связывания:
+ Не забудьте подключить Word’овский COM компонент как референс в проект.
Позднее связывание не требует подключения дополнительных библиотек и совместимо со всеми версиями ворда. Но, выполняется динамически, и об ошибке (не существующем методе) вы узнаете только во время выполнения.
Вот пример позднего связывания.
Этот код берет текст из текущего открытого процесса ворда и печатает его в консоль.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
dynamic word = System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
for (int i = 0; i < word.ActiveDocument.Paragraphs.Count; i++)
{
Console.WriteLine(word.ActiveDocument.Paragraphs[i + 1].Range.Text.ToString());
}
}
}
}
dzhariy, спасибо за помощь. Только Ваш код не скомпилился, я сделал вот так:
using System;
using Word = Microsoft.Interop.Office.Word
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var word = System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
Word.Application wordApp = (Word.Application)word;
for (int i = 0; i < wordApp.ActiveDocument.Paragraphs.Count; i++)
{
Console.WriteLine(wordApp.ActiveDocument.Paragraphs[i + 1].Range.Text.ToString());
}
}
}
}