加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

通过System.Windows.Automation访问Chrome中的Silverlight窗口

发布时间:2020-12-14 05:39:48 所属栏目:Windows 来源:网络整理
导读:这可能是徒劳的,但我想知道是否有人有这方面的经验. 我正在尝试使用System.Windows.Automation(例如,AutomationElement)访问Google Chrome中托管的Silverlight应用程序. 我遇到的问题是Chrome在子进程中托管Silverlight应用程序.如果我试图找到“Silverlight
这可能是徒劳的,但我想知道是否有人有这方面的经验.

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

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

如果我找到Silverlight主机子进程,它没有窗口句柄,如果我尝试使用子进程找到控件’处理它失败.

我知道它在那里……我可以用Inspect看到它

但我只能通过点击Silverlight应用程序并在Inspect中导航来找到它.我无法使用AutomationElement.FindFirst或Inspect从选项卡窗口向下导航.

就像窗口和Silverlight插件之间的断开一样,这在IE或Firefox中是看不到的,我不知道如何绕过它.

还有其他人能够做到这一点吗?

解决方法

我不确定这在你的实例中是否有帮助,但是我遇到了几个需要从外部启用Silverlight通信的实例(需要与Silverlight应用程序通信的Office应用程序AddIns).我在托管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);
    }

如果我能提供任何其他信息,请告诉我.希望这对你有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读