Расширение Office JavaScript API с помощью собственного элемента управления браузером - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь написать VSTO-надстройку с System.Windows.Forms.WebBrowser-Control, включающей что-то похожее на модель Office-JS-Add-In.

Элемент управления WebBrowser будет отображать некоторую HTML / JS-страницу и сможет вызывать C # -функции в VSTO-Add-In из JavaScript через window.external и свойство ObjectForScripting объекта WebBrowser.

То есть в JS вызов будет

window.external.DoFancyStuffToMyDocument(withTheseParams)

пока должно быть какое-то

class MyFunctionProxy() {
    public void DoFancyStuffToMyDocument(string theParam) {
        //code here
    }
}

в C # -Code и это будет присоединено к WebBrowser

myWebBrowser.ObjectForScripting = new MyFunctionProxy();

Пока все хорошо. Теперь приходит улов. Я хочу, чтобы мой HTML / JS-код мог также использовать код office.js и такие функции, как

Word.run(function (context) {
    var thisDocument = context.document;
    var range = thisDocument.getSelection();
    range.insertText('"Hitch your wagon to a star."\n', Word.InsertLocation.replace);
    //...
}

Кто-нибудь видит способ заставить это работать?

Мое первоначальное предположение заключалось в том, что надстройки OfficeJS-taskpane в Word on-prem используют какой-то похожий метод, описанный выше, с классом, производным от WebBrowser, и соответствующим ObjectForScripting. Это может означать, что должен существовать класс (который, мы надеемся, доступен), который назначается свойству ObjectForScripting, обрабатывающему вызовы функций из office.js. Затем я мог бы проксировать этот ObjectForScripting-класс и добавить свои собственные функции, такие как 'DoFancyStuffToMyDocument ()'.

...