Окно проверки орфографии с использованием взаимодействия MSWord в задней части моего приложения в Vista - PullRequest
3 голосов
/ 06 августа 2009

Я использую MSWord взаимодействие для проверки грамматики / заклинания в моем приложении. Я использую эти шаги, чтобы сделать это:

  1. Создайте новую однопоточную квартиру, чтобы не блокировать форму моего заявления
  2. Отключить ввод моего приложения
  3. Использование отражения (чтобы быть MSOffice независимой от версии)

Я использую этот код для открытия Word:

objWord = System.Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));
Object objDocuments = objWord.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, objWord, null);
objDoc = objDocuments.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objDocuments, null);
objContent = objDoc.GetType().InvokeMember("Content", BindingFlags.GetProperty, null, objDoc, null);

IDataObject oldObjData = Clipboard.GetDataObject();
Clipboard.SetDataObject(text);

objContent.GetType().InvokeMember("Paste", BindingFlags.InvokeMethod, null, objContent, null);

objDoc.GetType().GetMethod("CheckGrammar").Invoke(objDoc, null);
objWord.GetType().GetProperty("Visible").SetValue(objWord, false, null);
objContent.GetType().InvokeMember("Cut", BindingFlags.InvokeMethod, null, objContent, null);

IDataObject objData = Clipboard.GetDataObject();

objDoc.GetType().GetProperty("Saved").SetValue(objDoc, true, null);
objDoc.GetType().GetMethod("Close").Invoke(objDoc, new Object[] { null, null, null });
objWord.GetType().GetMethod("Quit").Invoke(objWord, new Object[] { null, null, null });

Но когда я вызываю это, только в Windows Vista, окно SpellCheck открывается в конце моего приложения, и мне нужно использовать ALT + TAB , чтобы показать окно Word.

Кто-нибудь имел эту проблему или есть предложение, как ее решить?

Я пытался позвонить

objDoc.GetType().GetMethod("Activate").Invoke(objDoc, null);

но это не работает. Других методов «Фокус» тоже нет.

Спасибо

1 Ответ

1 голос
/ 06 августа 2009

Попробуйте вызвать Activate для объекта Word Application. (Не объект Document)

РЕДАКТИРОВАТЬ : попробуйте вызвать его перед отображением диалога проверки орфографии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...