2009-08-06 7 views
2

J'utilise MSWord interop pour vérifier la grammaire/l'orthographe dans mon application. J'utilise ces mesures pour le faire:Fenêtre de vérification orthographique à l'aide de l'ouverture MSWord à l'arrière de mon application dans Vista

  1. Créer une nouvelle Single Thread Apartment pour ne pas bloquer la forme de mon application
  2. Désactiver l'entrée de mon application
  3. utilisant la réflexion (pour être MSOffice la version indépendante)

J'utilise ce code pour ouvrir 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 }); 

Mais quand J'appelle cela, seulement dans Windows Vista, la fenêtre SpellCheck s'ouvre à l'arrière de mon application, et je dois utiliser ALT + TAB pour afficher la fenêtre de Word.

Quelqu'un a eu ce problème ou a une suggestion comment résoudre?

J'ai essayé d'appeler

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

mais il ne fonctionne pas. Autres méthodes "Focus" non plus.

Merci

Répondre

1

Essayez d'appeler Activate sur l'objet de Word Application. (Pas l'objet Document)

EDIT: Essayez de l'appeler avant d'afficher la boîte de dialogue de vérification orthographique.

+0

J'ai déjà essayé les deux, Focus et Activate. Mais merci quand même. –

+0

J'ai tout essayé avec Focus et Activate dans toutes les positions plausibles sans succès. –

+0

Ensuite, je n'en ai aucune idée. – SLaks

Questions connexes