2016-07-14 320 views
6

In precedenza sono stato in grado di trovare un documento di Word all'interno di un'altra applicazione che utilizzatardiva in C# per Word di controllo in XAML/Store

[DllImport("Oleacc.dll")] 
private static extern long AccessibleObjectFromWindow(int windowHandle, int objectID, Guid refID, ref IntPtr accessibleObject); 

e gettando l'oggetto risultante tornato in un

Microsoft.Office.Interop.Word.Window 

Funziona molto bene in quanto posso ispezionare diverse proprietà di Word all'interno di, ad esempio, Microsoft Outlook, poiché MS Outlook utilizza una finestra di Word per il rendering del suo contenuto di posta elettronica.

Tuttavia, è un po 'più complicato nell'app XAML/Windows Store, poiché sembra che il documento Word sia incorporato senza un handle di finestra diretto. Di seguito è riportato l'output di inspector.exe della finestra. L'elemento "Messaggio" selezionato è la mia istanza di Word. Tuttavia, gli unici elementi nell'albero con NativeWindowHandles in base alla finestra di ispezione dell'accessibilità sono la finestra Posta e la finestra del titolo.

Qualcuno sa come eseguire il controllo di Word in un'app XAML/store esterna in un oggetto C#?

enter image description here

risposta

1

sei fuori di fortuna qui. Quello che vedi qui nello strumento Inpect è in effetti un elemento che ha un nome di classe "_WwG", ma non hai a che fare con un'istanza automatizzabile di Word qui.

Ciò che manca qui è prima di tutto un handle di finestra nativo della classe "_WwG" e inoltre, il codice utilizzato, pur essendo un componente di Microsoft Office 2016, non espone alcuna interfaccia COM a cui è possibile accedere (almeno non il familiare modello oggetto COM di Word).

A seconda delle esigenze, è possibile trovare una soluzione basata sull'automazione dell'interfaccia utente, lo stesso tipo di tecnica di ispezione utilizzata dallo strumento Inspect.