使用自己的浏览器控件扩展Office JavaScript API

时间:2018-06-29 09:17:32

标签: vsto webbrowser-control office-js

我正在尝试使用System.Windows.Forms.WebBrowser-Control编写VSTO加载项,以启用类似于Office-JS加载项模型的功能。

WebBrowser控件将显示一些HTML / JS-Page,并能够通过window.external和WebBrowser对象的ObjectForScripting属性从JavaScript调用VSTO加载项中的C#函数。

在JS中,调用会是

window.external.DoFancyStuffToMyDocument(withTheseParams)

必须要有一些

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

在C#代码中,该代码将附加到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);
    //...
}

有人看到一种使它起作用的方法吗?

我最初的猜测是,Word本地中的OfficeJS-taskpane-add-ins使用一些与上述类似的方法,并从WebBrowser和适当的ObjectForScripting派生了一个类。然后,这将建议必须有一个(希望可以访问的)类,该类已分配给处理来自office.js的函数调用的ObjectForScripting-property。然后,我可以代理此ObjectForScripting类,并添加自己的函数,例如“ DoFancyStuffToMyDocument()”。

0 个答案:

没有答案