4

这可能是徒劳的,但我想知道是否有人有这样做的经验。

我正在尝试使用System.Windows.Automation(例如AutomationElement )访问托管在Google Chrome中的Silverlight应用程序。

我遇到的问题是 Chrome 在子进程中托管 Silverlight 应用程序。如果我试图找到“Silverlight Control” AutomationElement(通过使用主进程的 hWnd),它会失败。

如果我找到 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 回答