如何访问 GeckoFX 中的 nsIHTMLEditor 界面?

How to access nsIHTMLEditor interface in GeckoFX?

我正在尝试通过将 GeckoFX 嵌入 VB.NET 中的 Windows Forms 应用程序来制作所见即所得 HTML 编辑器。

代码如下:

Dim Gbrowser As New GeckoWebBrowser
Gbrowser.Navigate("about:blank")
...
Gbrowser.Navigate("javascript:void(document.body.contentEditable='true')")

如何从我的应用程序中激活和访问 nsIHTML编辑器界面?

谢谢。

更新
此代码不起作用:

Dim hEditor As nsIHTMLEditor
hEditor = Xpcom.GetService(Of nsIHTMLEditor)("@mozilla.org/editor/htmleditor;1")
hEditor = Xpcom.QueryInterface(Of nsIHTMLEditor)(hEditor)
hEditor.DecreaseFontSize()

最后一行错误:调用 COM 组件返回 HRESULT E_FAIL。

nsIHTMLEditor 可能是每个浏览器实例而不是全局实例(就像 Xpcom.GetService 返回的东西)

可以通过(通过提供 Window 实例)

获得这样的 nsIEditor
var editingSession = Xpcom.CreateInstance<nsIEditingSession>("@mozilla.org/editor/editingsession;1");
nsIEditor editor = editingSession.GetEditorForWindow((nsIDOMWindow)Window.DomWindow);
Marshal.ReleaseComObject(editingSession);

(或者您可以调用 nsIEditor GeckoWebBrowser.Editor 属性。)

您可以将此 nsIEditor 转换为 nsIHtmlEditor(尽管我还没有尝试过)

GeckoWebBrowser browser = .....;
// Untested code
nsIHTMLEditor htmlEditor = (nsIHTMLEditor)browser.Editor;

更新: 来自@GreenBear

的 VB 代码
Dim gEditor As nsIHTMLEditor: 
gEditor = Gbrowser.Editor: 
gEditor.DecreaseFontSize()