我正在尝试使用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()”。