如何访问 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()
我正在尝试通过将 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()