2009-08-06 2 views
2

Ich verwende MSWord Interop, um Grammatik/Zauber in meiner Anwendung zu überprüfen. Ich bin mit diesen Schritten, dies zu tun:Rechtschreibprüfung Fenster mit MS Word Interop Öffnung auf der Rückseite meiner Anwendung in Vista

  1. Erstellen Sie ein neues Einzel Thread Apartment nicht meine Anwendung Form
  2. Deaktivieren Sie den Eingang meiner Anwendung zu sperren
  3. Mit Reflexion (MSOffice Version unabhängig zu sein)

ich verwende diesen Code Word zu öffnen:

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 }); 

Aber wenn Ich nenne das, nur in Windows Vista, das SpellCheck-Fenster öffnet sich auf der Rückseite meiner Anwendung, und ich brauche ALT + TAB, um das Word-Fenster anzuzeigen.

Hat jemand dieses Problem oder einen Vorschlag wie zu lösen?

Ich versuchte

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

zu nennen, aber es funktioniert nicht. Andere "Fokus" Methoden weder.

Dank

Antwort

1

Versuchen Activate auf Word Application Objekt aufrufen. (Nicht das Objekt Document)

BEARBEITEN: Versuchen Sie, es aufzurufen, bevor Sie das Rechtschreibprüfungsdialogfeld anzeigen.

+0

Ich habe in beiden bereits versucht, sowohl Focus und Activate. Aber trotzdem danke. –

+0

Ich habe alles mit Focus und Activate in jeder plausiblen Position ausprobiert, ohne Erfolg. –

+0

Dann habe ich keine Ahnung. – SLaks

Verwandte Themen