4

これはおそらく無駄ですが、誰かがこれを行った経験があるかどうか疑問に思っています。

System.Windows.Automation (例: AutomationElement )を使用して、Google Chrome内でホストされているSilverlightアプリケーションにアクセスしようとしています。

私が抱えている問題は、Chrome が子プロセス内で Silverlight アプリをホストしていることです。(メイン プロセスの hWnd を使用して) "Silverlight Control" AutomationElementを見つけようとすると、失敗します。

Silverlight ホストの子プロセスを見つけても、ウィンドウ ハンドルがなく、子プロセスのハンドルを使用してコントロールを見つけようとすると失敗します。

私はそれがそこにあることを知っています...私はそれをInspectを使って見ることができます

ジャークフェイス

しかし、これを見つけるには、Silverlight アプリをクリックして Inspect を上に移動する必要があります。AutomationElement.FindFirst または Inspect を使用してタブ ウィンドウから下に移動できません。

IE や Firefox では見られない、ウィンドウと Silverlight プラグインの間に切断があるようで、それを回避する方法がわかりません。

他の誰かがこれを行うことができましたか?

4

1 に答える 1

1

これがあなたのインスタンスで役立つかどうかはわかりませんが、外部からSilverlightへの通信を有効にする必要があるいくつかのインスタンスに遭遇しました(Silverlightアプリケーションと通信する必要があるOfficeアプリケーションアドイン)。その通信のブリッジとして、Silverlightアプリケーションをホストしているhtmlページでjavascriptを使用しました。

    function sendToNav(message) {
        var nav = document.getElementById("Nav");
        nav.content.NavigationPage.HandleScriptedMessage(message);
    }

    function passMessageToHost(message) {
        if (window.external == null) return;

        window.external.HandleScriptedMessage(message);
    }

私が提供できる追加情報があれば、私に知らせてください。これがお役に立てば幸いです。

于 2011-05-04T18:04:37.960 に答える