2015-11-01 43 views
2

我想通過在VB.NET中的Windows窗體應用程序中嵌入GeckoFX來製作所見即所得的HTML編輯器。如何訪問GeckoFX中的nsIHTMLEditor接口?

的代碼是這樣的:

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

如何激活和我的應用程序內訪問nsIHTMLEditor接口?

謝謝。

UPDATE
此代碼不起作用:

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

錯誤在最後一行:HRESULT E_FAIL已經從COM組件的調用返回。

回答

1

nsIHTMLEditor可能是一個每個瀏覽器實例,而不是全局實例(如由Xpcom.GetService返回的東西)

人們可以通過獲得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; 

更新: VB代碼從@GreenBear

Dim gEditor As nsIHTMLEditor: 
gEditor = Gbrowser.Editor: 
gEditor.DecreaseFontSize() 
+0

太謝謝你了,湯姆。這是一個好主意,它起作用了!它非常簡單。這是VB.NET中的代碼:Dim gEditor As nsIHTMLEditor:gEditor = Gbrowser.Editor:gEditor.DecreaseFontSize() – GreenBear