2016-07-14 6 views
6

以前私が後期はXAML /ストアアプリでWordコントロールにC#で結合

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

使用して得られたオブジェクトをキャストし、別のアプリケーション内のWord文書を見つけることができ

Microsoft.Office.Interop.Word.Window 
に戻ってきました

これは、MS OutlookがWordウィンドウを使用して電子メールコンテンツをレンダリングするときに、Microsoft Outlookの中のWordに関するさまざまなプロパティを調べることができるという点でかなりうまく機能します。

しかし、XAML/Windows Storeアプリケーションでは少し難解ですが、Wordのドキュメントは直接ウィンドウハンドルなしで埋め込まれているようです。以下は、ウィンドウのinspector.exeの出力です。選択された「メッセージ」アイテムは私のWordインスタンスです。ただし、アクセシビリティインスペクタに応じてNativeWindowHandlesを持つツリーの唯一のアイテムは、メールウィンドウとタイトルウィンドウです。

Wordのコントロールを外部のXAML /ストアアプリでC#オブジェクトにマーシャリングする方法を知っている人はいますか?

enter image description here

答えて

1

あなたはここで運の出ています。 Inpectツールでここに表示されているのは実際には "_WwG"クラス名を持つ要素ですが、ここではWordの自動化可能なインスタンスを扱っていません。

ここで欠けているものは、最初に "_WwG"クラスのネイティブウィンドウハンドルです。さらに、Microsoft Office 2016コンポーネントではありますが、使用されるコードは、アクセスできるCOMインターフェイスを公開しません少なくともWordの使い慣れたCOMオブジェクトモデルではない)。

要件に応じて、Inspectツールで使用されるのと同じ種類の検査手法であるUIオートメーションに基づいて解決策を見つけることができます。

関連する問題