Доступ к окну Silverlight в Chrome через System.Windows.Automation - PullRequest
4 голосов
/ 23 марта 2011

Это, вероятно, бесполезно, но мне интересно, есть ли у кого-нибудь такой опыт.

Я пытаюсь получить доступ к приложению Silverlight , размещенному в Google Chrome , с помощью System.Windows.Automation (например, AutomationElement ).

Проблема, с которой я столкнулся, заключается в том, что Chrome размещает приложение Silverlight в дочернем процессе. Если я пытаюсь найти "Silverlight Control" AutomationElement (с помощью основного процесса 'hWnd), произойдет сбой.

Если я найду дочерний процесс хоста Silverlight, у него не будет дескриптора окна, и если я попытаюсь найти элемент управления с помощью дочернего процесса 'Обработка этого не удалась.

Я знаю, что это там ... Я вижу это, используя Осмотр

Jerkface

но я могу найти это только , щелкнув в приложении Silverlight и перейдя в Inspect. Я не могу перейти вниз из окна вкладки, используя AutomationElement.FindFirst или Inspect.

Это похоже на разрыв между окном и плагином Silverlight, которого нет в IE или Firefox, и я не знаю, как его обойти.

Кто-нибудь еще мог это сделать?

1 Ответ

1 голос
/ 04 мая 2011

Я не уверен, помогает ли это вам или нет, но я столкнулся с несколькими случаями, когда мне нужно было включить связь с Silverlight извне (надстройки приложений Office, которые должны взаимодействовать с приложением Silverlight).Я использовал javascript на html-странице, на которой размещено приложение Silverlight, в качестве моста для этого общения:

    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);
    }

Если есть какая-либо дополнительная информация, которую я могу предоставить, пожалуйста, дайте мне знать.Надеюсь, это вам пригодится.

...