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
- Créer une nouvelle Single Thread Apartment pour ne pas bloquer la forme de mon application
- Désactiver l'entrée de mon application
- 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
J'ai déjà essayé les deux, Focus et Activate. Mais merci quand même. –
J'ai tout essayé avec Focus et Activate dans toutes les positions plausibles sans succès. –
Ensuite, je n'en ai aucune idée. – SLaks